В настоящее время я пытаюсь изучить Scala, поэтому я решил написать простую функцию, чтобы проверить, сбалансированы ли скобки в некотором выражении. Мой код выглядит следующим образомОшибка рассогласования Scala
def balance(chars: List[Char]): Boolean = {
def find(par: Char, list: List[Char]): Boolean = {
if(list.isEmpty) return false
if(list.head == par) {
return true
} else {
find(par, list.tail)
}
}
if(chars.isEmpty) {
return false
}
if(chars.head == '(') {
if(!find(')', chars.tail)) {
return false
}
} else {
balance(chars.tail)
}
}
Однако я получаю type mismatch, required: Boolean, found: Unit
на линии if(!find(')', chars.tail))
. Как это возможно? Я думаю, что функция рекурсии find
всегда будет возвращать Boolean
. Кстати, я не знаю, правильно ли мое решение, я просто застрял на этом исключении.
Что делать, если условие внутри 'if' не устраивает? Если вы не предоставите часть else, компилятор выведет 'Unit', потому что он не знает, что делать, если' if' терпит неудачу. –
Спасибо, это действительно сработало –
Продолжается ли курс курсуры? –