2013-09-29 9 views
4

Я пытался запустить этот код, но каким-то образом ударил стену с «несоответствия единиц измерения, логической ожидаемой ошибки». Я столкнулся с различными вопросами в Stackoverflow, но не нашел ничего конкретного, отвечающего на мой вопрос.Scala: Тип Несоответствие найдено, Требуется блок: Boolean

def balance(chars: List[Char]): Boolean = 
    { 
    var i = 0; 
    var j = 0; 

    if (Count(i, j) == 0){ 
     true 
    } 
    else{ 
     false 
    } 

    def Count(count: Int, Pos: Int): Int = 
    { 
      if (Pos == chars.length) 
      { 
       count 
      } 
      else 
      { 
       if (chars(Pos) == '(') 
       { 
        Count(count + 1, Pos + 1); 
       } 
       else 
       { 
        Count(count - 1, Pos + 1); 
       } 
      } 
    }  
    } 

ответ

8

Блочный код ограничен {} принимает значение последнего выражения внутри него. Здесь последнее выражение - это определение (def Count), которое оценивается как Unit. Поэтому переместите выражение, которое вы ожидаете оценить до конца.

+0

Кстати, если (Count (I, J) == 0) { истинно } еще { ложно } такая же, как граф (I, J) == 0 –

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