对于互联网上的所有例子,我无法弄清楚kotlin何时以及如何运行?
if(phones.size == 0){
phones.add("")
}
return phones[0]
因此,如果电话列表大小为0,我们添加空字符串并返回该字符串。
现在,如何让let做同样的事情?
phones.let {
return ""
}
这适用于大小为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
如果你的'手机'对象是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
}
结果值将是[0]或it.size,其类型将为Any。
但如果您需要这些功能,可以查看Markos解决方案。
如果你对如何用Kotlin的FP习语编写你的逻辑感兴趣,它根本不涉及let
:
phones.takeIf { it.isEmpty() }?.add("")
return phones[0]
但是,我发现这个成语并不比你开始时更好。