У меня есть следующий фрагмент кода (это для моего назначения coursea)Scala Список [Char] пуст, но не возвращает истинное
def balance(chars: List[Char]): Boolean = {
def innerBalance(chars: List[Char], count: Int): Boolean = {
if (chars.isEmpty) count == 0
if (chars.head == '(') innerBalance(chars.tail, count+1)
if (chars.head == ')') (count > 0) && innerBalance(chars.tail, count-1)
innerBalance(chars.tail, count)
}
innerBalance(chars, 0)
}
Из того, что я могу сказать, что это очень похоже на ответ на Стью на этом Scala way to program bunch of if's , но я не знаю, почему заявление
if (chars.isEmpty) count == 0
всегда быть ложными.
Если я запустить тест, как этот
balance("".toList)
он просто бросает исключение.
Благодарим за помощь. С уважением,
это не очень идиоматическое использование Скале. Я советовал использовать для использования 'match', чтобы уменьшить многословие и сложность вашего решения. – korefn