par de comentarios:
F:\prog\scala\scala-2.8.0.r18341-b20090718020201\bin>scala
Welcome to Scala version 2.8.0.r18341-b20090718020201 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_13).
Type in expressions to have them evaluated.
Type :help for more information.
scala> var z = List(List (1.0, 2.2), List(2, 1.1, -2.1))
z: List[List[AnyVal]] = List(List(1.0, 2.2), List(2, 1.1, -2.1))
scala> var z = List(List (1.0f, 2.2f), List(2f, 1.1f, -2.1f))
z: List[List[Float]] = List(List(1.0, 2.2), List(2.0, 1.1, -2.1))
Significado, como la pregunta "Java: my method wants the double type instead of float?":
La 'f' al final de la serie hace que sea un flotador en vez de una doble.
Java no reducirá automáticamente un doble a un flotante.
scala> var z = (1.0f :: 2.2f :: Nil) :: (2f :: 1.1f :: -2.1f :: Nil) :: Nil
z: List[List[Float]] = List(List(1.0, 2.2), List(2.0, 1.1, -2.1))
también funciona
Simplemente añadiendo el tipo explícito no sería suficiente:
scala> var z2 : List[List[Float]] = List(List(1.0, 2.2), List(2, 1.1, -2.1))
<console>:4: error: type mismatch;
found : Double(1.0)
required: Float
var z2 : List[List[Float]] = List(List(1.0, 2.2), List(2, 1.1, -2.1))
^
<console>:4: error: type mismatch;
found : Double(2.2)
required: Float
var z2 : List[List[Float]] = List(List(1.0, 2.2), List(2, 1.1, -2.1))
^
<console>:4: error: type mismatch;
found : Double(1.1)
required: Float
var z2 : List[List[Float]] = List(List(1.0, 2.2), List(2, 1.1, -2.1))
^
<console>:4: error: type mismatch;
found : Double(-2.1)
required: Float
var z2 : List[List[Float]] = List(List(1.0, 2.2), List(2, 1.1, -2.1))
^
Eso es lo mismo con una sola variable:
scala> var f : Float = -2.1
<console>:4: error: type mismatch;
found : Double(-2.1)
required: Float
var f : Float = -2.1
^
scala> var f : Float = -2.1f
f: Float = -2.1
Nota: Scala 2.7.5 final o 2,8 trabajo lo mismo aquí. – VonC