2012-09-22 9 views
15

Привет Я просто пытаюсь выполнить свои первые бит scala и попал в эту ошибку, которую я не понимаю. Я пытался разобраться и исчерпал свои идеи. Помогите?Scala: несоответствие типов; найдено: Требуется блок: Boolean

scala> def calculate(count: Int) : Boolean =  
    |   if (count<0) false 
<console>:8: error: type mismatch; 
found : Unit 
required: Boolean 
       if (count<0) false 
       ^

Благодаря

ответ

28

Вы должны иметь else положение, иначе тип проверки не знает, что тип возвращаемого значения, когда это не случае, когда count<0.

def calculate(count: Int): Boolean =  
    if (count<0) false 
    else true 

Или, еще лучше, вам не нужно заявление, если-вообще:

def calculate(count: Int) = count >= 0 
+0

Я собирался пост именно об этом. – Borgleader

+0

Darn it! Я знал, что это должно быть что-то простое! Благодарю. – Inti

+5

Чтобы быть точным, компилятор _does_ знает тип возврата. Оператор 'if' без ветви' else' имеет тип результата 'Unit' (и об этом говорит ошибка), поэтому' if (count <0) false' является short для 'if (count <0) false else()' , –

Смежные вопросы