我有一个let在另一个里面
someMethodCall()?.let{
// ....
// some code here
// ....
val resultCall = it
someMethod2Call()?.let {
// ...
val myVariable = it + resultCall
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
是否有可能在科特林第二内部let可以访问it第一let和避免使用resultCall变量?
bat*_*str 16
it是lambda参数的默认名称.it对于短lambda来说很方便,但你不应该用它来做更长的lambda.对于更长的lambdas,通过指定显式参数名称使代码更具可读性:
someMethodCall()?.let {
resultCall ->
// ... some code that uses "resultCall" instead of "it" ...
}
Run Code Online (Sandbox Code Playgroud)
使用不同的名称可以避免在内部块中隐藏变量,如示例中所示:
someMethodCall()?.let {
resultCall ->
// ... some code here ...
someMethod2Call()?.let {
resultCall2 ->
// ...
val myVariable = resultCall2 + resultCall
// ...
}
Run Code Online (Sandbox Code Playgroud)
不,这是不可能的,在这样的用例中,您绝对应该为参数使用显式名称:
someMethodCall()?.let{ v1->
// ....
// some code here
// ....
someMethod2Call()?.let { v2->
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1302 次 |
| 最近记录: |