我目前正在嘗試學習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