2016-07-27 11 views
-3

Вот функция балансировки скобок в scala. Я получаюТип Несоответствие в коде Scala

Error:(36, 10) type mismatch; 
found : Unit 
required: Int 
     a=a+1 
var a = 0 

     def balance(chars: List[Char]): Boolean = { 
     if(chars.isEmpty) 
      return Nil 
     { 
      if (chars.head == ')') 
      a=a-1 
      else (chars.head == '(') 
      a=a+1 
     } 
     if (a == -1) 
      return false 
     if ((a == 1 || a == 0) && chars.tail.isEmpty!= 0) 
      balance(chars.tail) 
     if (a == 0 && chars.tail.isEmpty) 
      return true 
     } 

Может кто-нибудь сказать мне, почему приходит эта ошибка?

ответ

4

Код ошибки заполнен.

Вы возвращаете Nil, тогда как ваша функция имеет тип возврата Boolean.

Вы определяете else с условием без if.

Вы используете неопределенное условие chars.tail.isEmpty!= 0.

Исправить эти и отменить код. Есть больше ошибок, но на данный момент трудно сказать, хотите ли вы рекурсивно вызывать и возвращать в пустой список или возвращать при некоторых условиях. Если у вас все еще есть проблемы, я буду соответствующим образом обновлять свой ответ.

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