me encontré con este número de Scala: https://issues.scala-lang.org/browse/SI-4939tema objeto `Foo {val 1 = 2}` en Scala
Parece que podemos definir un método cuyo nombre es un número:
scala> object Foo { val 1 = 2 }
defined module Foo
Pero podemos 't lo invocan:
scala> Foo.1
<console>:1: error: ';' expected but double literal found.
Foo.1
y podemos invocarlo dentro del objeto:
scala> object O { val 1 = 1; def x = 1 }
defined module O
scala> O.x
res1: Int = 1
Y siga arrojará error:
scala> object O { val 1 = 2; def x = 1 }
defined module O
scala> O.x
scala.MatchError: 2
at O$.<init>(<console>:5)
at O$.<clinit>(<console>)
at .<init>(<console>:7)
at .<clinit>(<console>)
at RequestResult$.<init>(<console>:9)
utilizo scalac -Xprint:typer
para ver el código, la parte val 1 = 2
es:
<synthetic> private[this] val x$1: Unit = (2: Int(2) @unchecked) match {
case 1 =>()
}
A partir de ella, podemos ver el nombre del método cambió a x$1
, y solo se puede invocar dentro de ese objeto.
y la resolución de esta cuestión es: No fijará
Quiero saber ¿hay alguna razón para que un número que es el nombre de un método? ¿Hay algún caso en el que necesitemos usar un método de "número"?
Más discusión en la lista de correo vinculado desde el billete: https://groups.google.com/ forum/#! topic/scala-user/k57U6jt8Za0 –