Nếu tôi có một gói com.example
, tôi có thể tạo ra một lớp trong gói phần mềm đó như thế này:Có sự khác biệt đáng kể nào giữa việc khai báo một lớp bình thường so với đối tượng gói không?
package com.example {
class MyClass
}
hay như thế này:
package com {
package object example {
class MyClass
}
}
Trong cả hai trường hợp, lớp kết quả là (như xa như mã Scala khác có liên quan, ít nhất) com.example.MyClass
.
Chắc chắn có sự khác biệt ngẫu nhiên. Trong trường hợp đầu tiên, lớp được biên dịch kết quả là com/example/MyClass.class
trong khi ở phần thứ hai nó là com/example/package$MyClass.class
nhưng có sự khác biệt đáng kể nào không?
Vì vậy, để hoàn thành, câu trả lời cho câu hỏi "có sự khác biệt đáng kể nào ..." là "không"? Chỉ là sự khác biệt ngẫu nhiên sẽ biến mất trong 2,10? Cảm ơn! –
Chính xác. (Có thể có nhiều lỗi ẩn nấp, dĩ nhiên.) Các đối tượng gói là một tính năng có thể phát triển hơn nữa: xem phần "Điều cần đến" ở đây: http://www.scala-lang.org/docu/files/packageobjects/ packageobjects.html – retronym