2017-07-15 47 views
-1

我有一個when expression看起來是這樣的:如何引用when表達式的未命名參數?

when(foo.toString()){ 
    ""  ->'A' 
    "HELLO" ->'B' 
    "GOODBYE"->'C' 
    else  ->foo.toString()[0]//problematic method call duplication 
} 

現在,我不想叫foo.toString()兩次,但我也希望這仍然是一個單一的表達。有沒有一種方便的方法可以讓我訪問我傳入else表達式中的值,例如語言中其他地方找到的it[email protected]語法?

我目前使用以下解決方法:

with(foo.toString()){ 
    when(this){ 
     ""  ->'A' 
     "HELLO" ->'B' 
     "GOODBYE"->'C' 
     else  ->this[0] 
    } 
} 

但這引入了另一個塊,比我想的可讀性。 有更好的解決方案嗎?

+0

的可能的複製[科特林當()的局部變量介紹](https://stackoverflow.com/questions/43102797/kotlin-when-local-variable-introduction) – zsmb13

回答

1

對於when塊沒有指定變量,但您可以使用let()函數進行類似的行爲,這可能比您的解決方法稍好一些,但行爲相同。

foo.toString().let{ 
    when(it){ 
     ""  ->'A' 
     "HELLO" ->'B' 
     "GOODBYE"->'C' 
     else  ->it[0] 
    } 
} 
相關問題