首页 文章

Kotlin函数类型

提问于
浏览
1

我实际上是kotlin语言的新手,所以这可能是基本问题,但我找不到合理的答案 .

根据我读过的资源,(Int) - > T是一个函数类型,它接受一个整数参数并返回任何东西;这就是为什么,我定义了这样的函数:

fun square( arg : Int ) : Int{
   return (arg * arg)
}

之后,我尝试将此函数的引用传递给kotlin中Array类的构造函数的第二个参数 . 此尝试会导致错误 . 该错误表示存在类型不匹配 .

var arr : Array<Int> = Array(5, square)

我无法理解为什么我会遇到这样的错误 . 有人能解释一下吗?

1 回答

  • 2

    你快到了,试试这个:

    Array(5, ::square)
    

    Function references使用 :: 运算符 .

    你也可以使用lambdas,感觉更加惯用:

    Array(5, { it * it } )
    

    并不是说这等同于以下内容,因为当lambda是传递给函数的最后一个参数时,它可以从括号中取出:

    Array(5) { it * it }
    

相关问题