Tag: 返回

打破kotlin中的匿名函数

创建一个测试用例来表示我正在尝试做什么。 我无法弄清楚如何“停止”继续在匿名函数中工作。 在下面的例子中,如果答案是正确的,我想跳出“苹果”部分。 下面的代码不能编译,因为它说的是返回@苹果而不是返回@香蕉这是唯一有效的选项,但我写下来试图解释我想要达到的目标,并更好地理解如何去做类似这个。 class FunctionBreakingTest { @Test fun stopInMiddleOfLambda() { var answer = "wrong" doStuff apple@ { doStuff banana@ { answer = "correct" if (answer == "correct") { return@apple } answer = "wrong" } answer = "wrong" } assertEquals("correct", answer) } private fun doStuff(foo: () -> Unit) = foo.invoke() }

Kotlin:一个默认的ish setter,返回“this”

我知道这不是“严格的设计模式”等等等等,但… 在Kotlin中,有没有办法创建一个返回“ this ”的“default-ish”setter,就像 var foo:Bar = Something() set(f:Bar) { foo = f return this // Alas, that would not compile because Setter returns Unit } 当setter返回this时很方便,因为不需要声明一个Builder就可以创建一个Builder模式。 这只是短暂的做法: BlahBlah().setFoo(x).setFoo2(y)… 比 BlahBlah.Builder().setFoo(x)…. 要么 var b = BlahBlah() b.setFoo(x) b.setFoo2(y) … 管他呢 而且,如果一个二传手返回Unit ,为什么不this呢?

在Kotlin中使用run函数而不是return是不是很好?

Kotlin有一个扩展功能run 。 /** * Calls the specified function [block] and returns its result. */ @kotlin.internal.InlineOnly public inline fun <R> run(block: () -> R): R = block() 而run函数可以用来代替返回。 // an example multi-line method using return fun plus(a: Int, b: Int): Int { val sum = a + b return sum } // uses run instead of […]

kotlin函数返回null

我正在尝试一些与kotlin的android开发。 在我的情况下,我想覆盖:ContentProvider我必须覆盖函数“查询”。 “查询”返回“光标”类型。 但是,当我用database.query在函数中创建Cursor实例时,我找回了一个“Cursor?” 类型。 所以我只能返回游标,如果它不是null,但是如果它是null,我该怎么办? 这基本上是这样的: override fun query(uri: Uri, projection: Array<out String>?, selection: String?, selectionArgs: Array<out String>?, sortOrder: String?): Cursor { val cursor = queryBuilder.query(db, projection, selection, selectionArgs, null, null, sortOrder) // make sure that potential listeners are getting notified cursor?.setNotificationUri(getContext()?.getContentResolver(), uri) if(cursor != null) return cursor else // what to do here? […]