2012-09-22 20 views
15

Hola, estoy probando mis primeros bits de scala y he llegado a este error que no entiendo. He estado tratando de resolverlo y he agotado mis ideas. ¿Ayuda?Scala: tipo desajuste; encontrado: Unidad requerida: Boolean

scala> def calculate(count: Int) : Boolean =  
    |   if (count<0) false 
<console>:8: error: type mismatch; 
found : Unit 
required: Boolean 
       if (count<0) false 
       ^

Gracias

Respuesta

28

Tienes que tener una cláusula else, de lo contrario el tipo de corrector no sabe cuál es el tipo de retorno es cuando es no el caso de que count<0.

def calculate(count: Int): Boolean =  
    if (count<0) false 
    else true 

O, mejor aún, que no necesita la instrucción if-en absoluto:

def calculate(count: Int) = count >= 0 
+0

que iba a cargo exactamente eso. – Borgleader

+0

¡Maldita sea! ¡Sabía que debe ser algo simple! Gracias. – Inti

+5

Para ser precisos, el compilador _ conoce_ conoce el tipo de devolución. Una instrucción 'if' sin la rama' else' tiene el tipo de resultado 'Unit' (y eso es lo que dice el error), así' if (count <0) false' es la abreviatura de 'if (count <0) false else()' . –

Cuestiones relacionadas