kotlin 如何以及何时让 运行?
How and when does kotlin let run?
对于互联网上的所有示例,我无法弄清楚 kotlins 何时以及如何让 运行?
if(phones.size == 0){
phones.add("")
}
return phones[0]
因此,如果电话列表大小为 0,我们将添加空字符串并 return 代替。
现在如何用 let 做同样的事情?
phones.let {
return ""
}
这是否适用于大小 0,还是我必须有空列表?
我需要 return 关键字吗?如果需要,在哪里?
上面的乐趣总是return空字符串吗?或者就在 phones 为空时?
这个 let 代码什么时候会阻塞 运行?
如果你对如何用 Kotlin 的 FP 习语编写你的逻辑感兴趣,它根本不涉及 let
:
phones.takeIf { it.isEmpty() }?.add("")
return phones[0]
但是,我发现这个成语并不比你开始时使用的更好。
更新:
val cakes = listOf("carrot", "cheese", "chocolate")
fun main(args: Array<String>) {
var cakesEaten = 0
while (cakesEaten < 3) { // 1
cakesEaten ++
val result = cakes?.let{
if(cakesEaten == 2) {
"HeyLo"
} else {
2
}
}
println("result value = $result")
when(result) {
is String -> println(" result variable is a String")
is Int -> println(" result variable is Integer")
}
}
}
result value = 2
result variable is Integer
result value = HeyLo
result variable is a String
result value = 2
result variable is Integer
原版post
如果您的 'phones' 对象是 Nullable 类型,
val result = phones?.let{
// this block runs only if phones object is not null
// items can be accessed like it.size
// expression result will be returned. no need to mention return.
if(it.size == 0) {
it.add("")
it[0]
} else it.size
}
result 值将为 it[0] 或 it.size,其类型将为 Any。
但如果这是您需要的功能,您可以查看 Markos 解决方案。
对于互联网上的所有示例,我无法弄清楚 kotlins 何时以及如何让 运行?
if(phones.size == 0){
phones.add("")
}
return phones[0]
因此,如果电话列表大小为 0,我们将添加空字符串并 return 代替。
现在如何用 let 做同样的事情?
phones.let {
return ""
}
这是否适用于大小 0,还是我必须有空列表?
我需要 return 关键字吗?如果需要,在哪里?
上面的乐趣总是return空字符串吗?或者就在 phones 为空时?
这个 let 代码什么时候会阻塞 运行?
如果你对如何用 Kotlin 的 FP 习语编写你的逻辑感兴趣,它根本不涉及 let
:
phones.takeIf { it.isEmpty() }?.add("")
return phones[0]
但是,我发现这个成语并不比你开始时使用的更好。
更新:
val cakes = listOf("carrot", "cheese", "chocolate")
fun main(args: Array<String>) {
var cakesEaten = 0
while (cakesEaten < 3) { // 1
cakesEaten ++
val result = cakes?.let{
if(cakesEaten == 2) {
"HeyLo"
} else {
2
}
}
println("result value = $result")
when(result) {
is String -> println(" result variable is a String")
is Int -> println(" result variable is Integer")
}
}
}
result value = 2
result variable is Integer
result value = HeyLo
result variable is a String
result value = 2
result variable is Integer
原版post
如果您的 'phones' 对象是 Nullable 类型,
val result = phones?.let{
// this block runs only if phones object is not null
// items can be accessed like it.size
// expression result will be returned. no need to mention return.
if(it.size == 0) {
it.add("")
it[0]
} else it.size
}
result 值将为 it[0] 或 it.size,其类型将为 Any。
但如果这是您需要的功能,您可以查看 Markos 解决方案。