he el siguiente código para imprimir los números del 1 al 9 en las cartasvuelve alcance Scala largo en lugar de Int
class IntToNumber(num:Int) {
val digits = Map("1" -> "one", "2" -> "two", "3" -> "three", "4" -> "four", "5" -> "five", "6" -> "six", "7" -> "seven", "8" -> "eight", "9" -> "nine")
def inLetters():String = {
digits.getOrElse(num.toString,"")
}
}
implicit def intWrapper(num:Int) = new IntToNumber(num)
(1 until 10).foreach(n => println(n.inLetters))
Cuando ejecuto el código me sale un error diciendo que el método no está disponible para Long
Script.scala:9: error: value inLetters is not a member of Long
(1 until 10).foreach(n => println(n.inLetters))
^
one error found
Cambio de la última línea para
(1 until 10).foreach(n => println(n.toInt.inLetters))
funciona bien ..
¿Alguien puede ayudarme a entender por qué ese rango (de 1 a 10) regresa largo y no int?
Puzzling. '(1 a 10): IndexedSeq [Int]' dice que la expresión tiene el tipo 'NumericRange.Exclusive [Long]' y por lo tanto la adscripción no es válida. '(1 a 10): IndexedSeq [Long]' funciona. – missingfaktor
Parece un error. Ejecutar '(1 hasta 2) foreach (x => println (x.getClass))' no da resultados consistentes. Algunas veces imprime 'int', otras veces imprime' long'. – missingfaktor
Oh, parece que @ziggystar resolvió el misterio. :-) – missingfaktor