2015-02-12 14 views
6

In Scala posso scrivere qualcosa di simile:Kotlin: come restituire un valore dall'ambito?

val something = { 
    val temp1 = ... 
    val temp2 = ... 
    temp1 + temp2 
} 

Per quanto ne so il modo migliore per fare lo stesso in Kotlin è:

val something = { 
    val temp1 = ... 
    val temp2 = ... 
    temp1 + temp2 
}() 

In realtà si tratta di una lambda di tipo Unit -> Int che viene chiamato immediatamente. Mi chiedo se questo codice possa essere migliorato in qualche modo? Forse c'è una funzione incorporata che mi permette di scrivere val qualcosa = block {...} o qualcosa del genere?

risposta

13

È possibile utilizzare la funzione run, come:

val something = run { 
    val temp1 = ... 
    val temp2 = ... 
    temp1 + temp2 
} 
+0

Questa è la stessa cosa (anche più verboso) di quello che l'OP postato? – monkjack

+0

Ora lo hai modificato, è esattamente quello che sta cercando. – monkjack

+0

Grazie per il tuo commento! – bashor

Problemi correlati