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 }