tôi gặp phải như sau trong mã Scala:Nhập này chính xác có ý nghĩa gì trong Scala?
class MyClass { ... val a = new A; import a._ }
thực hiện chính xác val a = new A; import a._
nghĩa là gì?
tôi gặp phải như sau trong mã Scala:Nhập này chính xác có ý nghĩa gì trong Scala?
class MyClass { ... val a = new A; import a._ }
thực hiện chính xác val a = new A; import a._
nghĩa là gì?
Nó nhập các phương thức và biến của đối tượng. Vì vậy, nếu bạn muốn gọi số a.foo()
, bạn có thể chỉ cần gọi số foo()
.
Điều đó có nghĩa là tất cả các phương pháp và biến của a
đối tượng của loại A
hiện có sẵn trong khối này (phạm vi) mà không đề cập rõ ràng a
. Vì vậy, nếu A
có một phương pháp bar()
bây giờ bạn có thể nói:
bar()
thay vì
a.bar()
nhưng chỉ trong phạm vi nơi import
được định nghĩa.
Hãy giải thích điều này với một cái gì đó bạn nên làm quen với:
println("Hello world")
Câu hỏi đặt ra là: tại sao mà làm việc? Không có đối tượng nào được gọi là println
với phương thức apply
, đây là giải thích thông thường cho mã trông giống như vậy. Vâng, khi nó xảy ra, các mã trên được thực sự làm điều này:
Predef.println("Hello world")
Nói cách khác, println
là một phương pháp trên đối tượng scala.Predef
. Vì vậy, làm thế nào bạn có thể sử dụng nó như trên? Vâng, như thế này:
Nhập nội dung của một tham chiếu ổn định (tức là, không phải là một var
hoặc một def
) sẽ làm cho phương pháp của nó có sẵn mà không cần phải thêm tiền tố họ với reference.
.
Nó cũng làm cho bất kỳ implicits định nghĩa bên trong nó có sẵn, đó là cách chuyển đổi ngầm định nghĩa bên scala.Predef
được làm sẵn cũng - Scala nhập khẩu nội dung của java.lang
, scala
và scala.Predef
(theo thứ tự đó, vì vậy những người ghi đè sau những cái trước đó).
+1 vì bạn đã đề cập đến tham chiếu _stable_ –