我目前正在尝试学习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)
}
}
但是我就行了if(!find(')', chars.tail))
越来越type mismatch, required: Boolean, found: Unit
。这怎么可能?我认为find
递归函数总是会返回一个Boolean
。顺便说一句,我不知道我的解决方案是否正确,我只是停留在这个例外。
如果在'if'里面的条件是不是满意?如果你没有提供else部分,编译器会推断'Unit',因为如果'if'失败,他不知道该怎么做。 – 2014-09-28 15:29:10
谢谢,真的有效 – 2014-09-28 15:35:28
coursera课程是否再次运行? – 2014-09-28 16:37:25