Kotlin如何以及何时运行?

时间:2019-03-22 11:25:41

标签: kotlin let

对于Internet上的所有示例,我都无法弄清何时以及如何让Kotlins运行?

if(phones.size == 0){
        phones.add("")
    }
return phones[0]

因此,如果电话列表的大小为0,我们将添加一个空字符串,并将其返回。

现在,人们对let怎么做?

phones.let {
    return ""
}

此文件的大小为0,还是我必须有一个空列表?

我是否需要return关键字,如果是,在哪里?

上面的乐趣总是返回空字符串吗?或仅当电话为空时?

什么时候让代码块甚至运行?

2 个答案:

答案 0 :(得分:1)

更新

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

原始帖子

如果您的“电话”对象为可空类型,

 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解决方案。

答案 1 :(得分:0)

如果您对如何在Kotlin的FP习惯用法中编写逻辑感兴趣,那么它根本不涉及let

phones.takeIf { it.isEmpty() }?.add("")
return phones[0]

但是,我发现这个成语并不比您刚开始时要好。