tôi thấy vấn đề này của scala: https://issues.scala-lang.org/browse/SI-4939vấn đề 'đối tượng Foo {val 1 = 2} `trong scala
Có vẻ chúng ta có thể xác định một phương pháp có tên là một con số:
scala> object Foo { val 1 = 2 }
defined module Foo
Nhưng chúng ta có thể 't gọi nó:
scala> Foo.1
<console>:1: error: ';' expected but double literal found.
Foo.1
Và chúng ta có thể gọi nó bên trong đối tượng:
scala> object O { val 1 = 1; def x = 1 }
defined module O
scala> O.x
res1: Int = 1
Và theo sẽ ném lỗi:
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)
tôi sử dụng scalac -Xprint:typer
để xem mã, phần val 1 = 2
là:
<synthetic> private[this] val x$1: Unit = (2: Int(2) @unchecked) match {
case 1 =>()
}
Từ đó, chúng ta có thể thấy tên phương pháp thay đổi để x$1
, và chỉ có thể được gọi bên trong đối tượng đó.
Và việc giải quyết các vấn đề đó là: Sẽ không Fix
Tôi muốn biết là có lý do nào để cho phép một số là tên của một phương pháp? Có trường hợp nào chúng ta cần sử dụng phương thức "số" không?
thảo luận thêm thông tin trong danh sách gửi thư liên kết từ vé: https://groups.google.com/ Diễn đàn/#! topic/scala-user/k57U6jt8Za0 –