Tag: function

从字符串实例化一个函数?

我有一个函数定义在一个字符串,并需要一种方法来实例化它: val myFunction = “””fun (file:Int, rank:Int, playerHasWhite: Boolean): Boolean { val a = file + 3 val b = rank – 2 if (playerHasWhite) a>b else a<b } """ 那么,是否有一个简单的方法,通过reflection来实例化myFunction? (我注意到我可能需要jar kotlinreflection)

为什么我可以在Kotlin中省略函数调用?

在下面的例子中,我有2个函数,返回int。 在一种情况下,我有义务使用函数调用括号() ,在其他情况下,我被禁止使用它。 为什么以及如何控制? package kotlin.tests import java.util.ArrayList object MyObject { fun getValue(): Int { return 0 } } fun main() { val arrayList : ArrayList = ArrayList() println(arrayList.size()) // Expression ‘size’ of type ‘Int’ cannot be invoked as a function. The function ‘invoke()’ is not found println(MyObject.getValue) // Function invocation ‘getValue()’ expected }

Kotlin:你可以用varargs命名参数吗?

例如,你可能有一个复杂的签名和可变参数的函数: fun complicated(easy: Boolean = false, hard: Boolean = true, vararg numbers: Int) 这应该是有道理的,你应该能够这样调用这个函数: complicated(numbers = 1, 2, 3, 4, 5) 不幸的是,编译器不允许这样做。 有没有可能使用可变参数命名参数? 有没有什么聪明的解决办法?

Kotlin – 当用返回types的函数expression时

我想利用kotlin的expression式和generics方法来简化Android的共享偏好api。 而不是一直调用getString()&getInt()等,我想要做的是创建一个扩展函数,它将根据函数的返回types进行切换,并调用适当的方法。 如下所示: fun SharedPreferences.get(key: String): T? { when (T) { //how do I switch on return type and call appropriate function? is String -> getString(key, null) is Int -> getInt(key, -1) is Boolean -> getBoolean(key, false) is Float -> getFloat(key, -1f) is Long -> getLong(key, -1) } return null } 当然,这是行不通的。 但是在expression函数的返回types时有什么解决方案吗? 所有的建议都欢迎。

Kotlin – 高阶函数成本?

高阶函数是否有成本? 我可以很容易地解决一些问题,但我不确定它是否会影响性能。 这有什么限制吗?

解释这个Kotlin函数结构

我正在使用这个Kotlin函数。 我知道我们有一个名为mPasswordView!!.setOnEditorActionListener的函数,它mPasswordView!!.setOnEditorActionListener参数TextView.OnEditorActionListener ,但那是什么? 我们在参数里面有花括号吗? mPasswordView!!.setOnEditorActionListener(TextView.OnEditorActionListener { textView, id, keyEvent -> if (id == R.id.login || id == EditorInfo.IME_NULL) { attemptLogin() return@OnEditorActionListener true } false })