Ritorna in Scala

Sono un principiante programmatore di scala e ho trovato un comportamento strano.

def balanceMain(elem: List[Char]): Boolean = { if (elem.isEmpty) if (count == 0) true; else false; if (elem.head == '(') balanceMain(elem.tail, open, count + 1);.... 

Sopra fondamentalmente voglio restituire true se elem.isEmpty e count == 0 . Altrimenti, voglio restituire false.

Ora sopra ho letto che non è necessario aggiungere un’istruzione return in scala. Quindi ho omesso il return sopra. Ma non restituisce il booleano. Se aggiungo un’istruzione return true come return true . funziona perfettamente. Perché è così?

Inoltre, perché è considerata una ctriggers pratica avere dichiarazioni di ritorno in scala