0
我不明白爲了讓scala理解我的函數最終會輸出正確的類型而不是單元的函數和函數部分的順序。我已經提出了評論(第7行和最後一行),這是日食在這些行上告訴我的。任何對編譯器的深入瞭解都非常感謝。正確的函數定義結構?
object braces {
def balance(chars: List[Char]): Boolean = {
def rightBraces(chars: List[Char], openCount: Int, closeCount: Int): Boolean = {
if (!chars.tail.isEmpty) {
if (chars.head == '(') rightBraces(chars.tail, openCount + 1, closeCount)
/*type mismatch; found : Unit required: Boolean*/else if (chars.head == ')') rightBraces(chars.tail, openCount, closeCount + 1)
}
else {
if ((chars.head == '(')&&(openCount == (closeCount - 1))) true
else if ((chars.head == ')')&&(openCount == (closeCount + 1))) true
else (openCount == closeCount)
}
}
def wrongBrace(chars: List[Char]): Boolean = {
if (!chars.tail.isEmpty) {
if (chars.head == ')') false
else if (chars.head == '(') rightBraces(chars.tail, 1, 0)
else wrongBrace(chars.tail)
}
else false
}
wrongBrace(chars)
}
}//Missing closing brace `}' assumed here
問題是,如果兩個條件都是假的(如果if和else if都是第6行和第7行),那麼您沒有提供值爲else的子句, –