2013-04-15 4 views
0

Я не уверен, как использовать ключевое слово return в анонимной функции (или, может быть, я должен решить свою проблему по-другому?).Как вернуться в анонимную функцию/литерал функции?

Как сейчас, return фактически относится к прилагаемой функции.

()=>{ 
    if (someMethodThatReturnsBoolean()) return true 
    // otherwise do stuff here 
}:Boolean 
+0

Вы почти наверняка не хотите. Ключевое слово «return» от Scala _always_ и _only_ возвращается из методов верхнего уровня (на уровне класса, называется ли этот класс или нет, или он вложен или нет). Следовательно, 'return' в функции literal _or_ вложенный метод редко бывает полезен. –

ответ

5

Почему нет?

() => 
    someMethodThatReturnsBoolean() || { 
    //do stuff here that eventually returns a boolean 
    } 

Или, если вам не нравится, чтобы вызывать побочные эффекты с оператором || вы можете просто использовать обычный, если:

() => 
    if (someMethodThatReturnsBoolean()) 
    true 
    else { 
    //do something here that returns boolean eventually 
    } 

if просто выражение в Scala, и вы должны организовать свой код по-разному, и максимально избегайте return.

4

Так как это прямо сейчас, на самом деле возврат относится к прилагаемой функции.

Вот как это должно быть. Вы не можете использовать return для возврата из анонимной функции. Вам придется переписать код, чтобы избежать заявления return, как в:

()=>{ 
    if (someMethodThatReturnsBoolean()) true 
    else { 
    // otherwise do stuff here 
    } 
}:Boolean 
Смежные вопросы