Kotlin函数types
我其实是kotlin语言的新手,所以这可能是一个基本的问题,但我找不到合理的答案。
根据我读的资源,(Int) – > T是一个函数types,它接受一个整数参数并返回任何东西; 这就是为什么,我定义了一个这样的function:
fun square( arg : Int ) : Int{ return (arg * arg) }
之后,我尝试将此函数的引用传递给kotlin中Array类的构造函数的第二个参数。 这种尝试会导致错误。 错误说有一个types不匹配。
var arr : Array = Array(5, square)
我不明白为什么我会面对这样的错误。 任何人都可以解释我?
你快到了,试试这个:
Array(5, ::square)
函数引用使用::
运算符。
你也可以使用lambdas,感觉更习惯:
Array(5, { it * it } )
这不是等同于以下内容,因为当lambda是传递给函数的最后一个参数时,可以将其从括号中提取出来:
Array(5) { it * it }
- 在kotlin中使用意外的令牌(在同一行上使用;来分隔expression式)
- Kotlin原生界面
- 异步春季启动使用Kotlin无法正常工作
- @Parcelize注释与inheritance
- Kotlin:必需:kotlin.Boolean。 find:kotlin.Boolean?
- Spring代理类和Kotlin中的空指针exception
- Kotlin:Gradle增量编译
- 从字符串实例化一个函数?
- java.lang.RuntimeException:java.lang.RuntimeException:com.android.builder.dexing.DexArchiveMergerException:无法合并dex