Как и когда бегает котлин? - PullRequest
0 голосов
/ 22 марта 2019

для всех примеров в интернете я не могу понять, когда и как запускаются котлины?

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

поэтому, если размер списка телефонов равен 0, мы добавляем пустую строку и возвращаем ее вместо этого.

Теперь, как можно поступить так же с let?

phones.let {
    return ""
}

это работает с размером 0, или у меня должен быть нулевой список?

мне нужно ключевое слово return, если да, то где?

всегда ли приведенное выше веселье будет возвращать пустую строку? или только когда телефоны ноль?

когда этот блок кода let даже запускается?

Ответы [ 2 ]

1 голос
/ 22 марта 2019

Обновление

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
             }

результат значение будет либо it [0], либо it.size, а его тип будет Any.

Но если вам нужна эта функциональность, вы можете проверить решение Markos.

0 голосов
/ 22 марта 2019

Если вас интересует, как написать свою логику в языке FP Kotlin, он вообще не включает let:

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

Однако я не нахожу эту идиому лучше, чем вы начали.

...