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 }