2013-09-05 2 views
2

Почему method1 возвращение 1, а method2 2:Возвращение значения из попытки - наконец

def method1 = try { 1 } finally { 2 }     

def method2: Int = try { return 1 } finally { return 2 } 

и почему method2 требует указания типа возвращаемого?

+0

Похоже, что это описано здесь: http://stackoverflow.com/questions/8443743/return-and-try-catch-finally-block-evaluation-in-scala – yakshaver

+0

Также проверьте http://stackoverflow.com/вопросы/13892985/возврат стоимость из-наконец-блока-в-Скала –

ответ

3

Этот вопрос, вероятно, будет закрыта к утру, но просто для удовольствия:

scala> def foo = return 1 
<console>:7: error: method foo has return statement; needs result type 
     def foo = return 1 
       ^

SLS 6,20: «Тип выражения возвращение scala.Nothing»

Это отвечает на второй вопрос. Это не помогает выводам типа результата.