Kotlin fun() vs lambda 有区别吗?
Kotlin fun() vs lambda is there difference?
这个问题是关于 fun() 与 lambda 块定义和范围的对比。
我尝试用两种方式定义表达式。这是我尝试过的:
val myFunction = fun(){
println("i am in a function")
}
//but i also tried doing this:
val myFunction = {
println("i am in a lambda")
}
我的问题是我不知道它们是否相同?
见参考:https://kotlinlang.org/docs/reference/lambdas.html
There are several ways to obtain an instance of a function type:
Using a code block within a function literal, in one of the forms:
- a lambda expression: { a, b -> a + b },
- an anonymous function: fun(s: String): Int { return s.toIntOrNull() ?: 0 }
两者都为您提供了一个可以互换使用的函数对象
差异在 https://kotlinlang.org/docs/reference/lambdas.html#anonymous-functions 中得到了最好的描述:
匿名函数允许您指定 return 类型,lambda 不能。
如果你不这样做,return 类型推断就像普通函数一样工作,而不像 lambdas。
正如@dyukha所说,return
的含义不同:
A return statement without a label always returns from the function declared with the fun keyword. This means that a return inside a lambda expression will return from the enclosing function, whereas a return inside an anonymous function will return from the anonymous function itself.
没有隐式 it
参数或解构。
您的具体案例将是等效的,是的。
这个问题是关于 fun() 与 lambda 块定义和范围的对比。
我尝试用两种方式定义表达式。这是我尝试过的:
val myFunction = fun(){
println("i am in a function")
}
//but i also tried doing this:
val myFunction = {
println("i am in a lambda")
}
我的问题是我不知道它们是否相同?
见参考:https://kotlinlang.org/docs/reference/lambdas.html
There are several ways to obtain an instance of a function type:
Using a code block within a function literal, in one of the forms:
- a lambda expression: { a, b -> a + b },
- an anonymous function: fun(s: String): Int { return s.toIntOrNull() ?: 0 }
两者都为您提供了一个可以互换使用的函数对象
差异在 https://kotlinlang.org/docs/reference/lambdas.html#anonymous-functions 中得到了最好的描述:
匿名函数允许您指定 return 类型,lambda 不能。
如果你不这样做,return 类型推断就像普通函数一样工作,而不像 lambdas。
正如@dyukha所说,
return
的含义不同:A return statement without a label always returns from the function declared with the fun keyword. This means that a return inside a lambda expression will return from the enclosing function, whereas a return inside an anonymous function will return from the anonymous function itself.
没有隐式
it
参数或解构。
您的具体案例将是等效的,是的。