Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin Lambda语法解释_Lambda_Kotlin - Fatal编程技术网

Kotlin Lambda语法解释

Kotlin Lambda语法解释,lambda,kotlin,Lambda,Kotlin,我是一个Kotlin初学者,非常想知道println的lambda表达式的行为。不幸的是,这两个函数的作用是相同的 val printFunction1:(String) -> Unit = { println("Hello, $it!") } val printFunction2 = { user: String -> println("Hello, $user!") } 我可以像这样调用函数,如果

我是一个Kotlin初学者,非常想知道println的lambda表达式的行为。不幸的是,这两个函数的作用是相同的

    val printFunction1:(String) -> Unit = {
        println("Hello, $it!")
    }

    val printFunction2 = {
        user: String ->
        println("Hello, $user!")
    }
我可以像这样调用函数,如果有人能解释一下就好了

 printFunction1("Bini")
 printFunction2("Jenu")

lambda在这两种情况下的行为与正常函数完全相同。 接受输入(参数)作为字符串,函数执行println() 正常功能:

fun funName(parameters):ReturnType{FunBody}
与变量关联的Lambda函数:

var varFunName:(ParameterType) ->Unit={FunBody}
               or
var varFunName = {
    parameters -> {FunBody}
}
注意:由于第一个类型中没有参数名,它会自动映射到它的变量/表达式
要了解更多信息,请查看页面,该页面确实包含所有Kotlin语言结构的语法,可能需要一些时间来理解所有语法都是链接,因此如果您想了解该部分,只需遵循链接即可。Lambdas在这两种情况下的行为与正常函数完全相同。 接受输入(参数)作为字符串,函数执行println() 正常功能:

fun funName(parameters):ReturnType{FunBody}
与变量关联的Lambda函数:

var varFunName:(ParameterType) ->Unit={FunBody}
               or
var varFunName = {
    parameters -> {FunBody}
}
注意:由于第一个类型中没有参数名,它会自动映射到它的变量/表达式
要了解更多信息,请查看页面是否有适用于所有Kotlin语言结构的语法可能需要一些时间才能理解所有语法都是链接,因此如果您想了解该部分,只需遵循链接即可

您希望函数的行为如何

第一个有一个显式的
(String)->单元
。这样,就不需要在lambda中指定参数类型
String
。您可以将
it
(对于lambdas的单个参数)用作
字符串

第二个参数没有指定类型,您需要告诉编译器lambda参数的类型,这是您使用
user:String->
所做的。请注意,更惯用的做法是将此零件移动到带有开口支架的直线上:

val printFunction2 = { user: String ->
    println("Hello, $user!")
}

否则我就看不到这里有什么奇怪的事情发生。如果您需要进一步的说明,请告诉我。

您希望函数的行为如何

第一个有一个显式的
(String)->单元
。这样,就不需要在lambda中指定参数类型
String
。您可以将
it
(对于lambdas的单个参数)用作
字符串

第二个参数没有指定类型,您需要告诉编译器lambda参数的类型,这是您使用
user:String->
所做的。请注意,更惯用的做法是将此零件移动到带有开口支架的直线上:

val printFunction2 = { user: String ->
    println("Hello, $user!")
}

否则我就看不到这里有什么奇怪的事情发生。如果您需要进一步澄清,请告诉我。

为什么您会说“不幸的是”这两个功能在做相同的工作?你到底期望什么?实际使用哪一个?为什么说“不幸的是”这两个函数做的是相同的工作?你到底期望什么?实际使用哪一个?