TL & DR: Có thể (cục bộ?) Vô hiệu hóa nhập đường dẫn phụ thuộc không? Tôi muốn đưa ra một tuyên bố nhập đơn lẻ tương tự như import x._
, nhưng để thực hiện C
, hãy tham khảo X#C
thay vì x.C
(X
là loại x
)?Làm thế nào để nhập khẩu các lớp bên trong mà không phụ thuộc đường dẫn trong Scala?
tôi có một loạt các loại:
class Button[M] { ... }
class Label[M] { ... }
...
Và tôi xảy ra để sử dụng chúng cùng nhau đi qua các đối số kiểu tương tự cho tất cả trong số họ:
class UseSite[M] (
btn1 : Button[M]
, btn2 : Button[M]
, lbl1 : Label[M]) {
...
}
tôi nghĩ rằng nó sẽ được tốt đẹp để đóng gói tất cả các loại đó để tôi chỉ cần chuyển thông số loại một lần:
class Swing[M] {
class Button { ... }
class Label { ...}
}
Sau đó, trên trang web sử dụng I 'Muốn để có thể làm điều này:
class WithSwing[M] {
val swing = new Swing[M]
import swing._
class UseSite(
btn1 : Button
, btn2 : Button
, lbl1 : Label) {
...
}
}
Tuy nhiên, điều này không hoạt động đúng vì gõ đường dẫn phụ thuộc: Button
đề cập đến swing.Button
thay vì Swing[M]#Button
nên mã bên ngoài có một thời gian rất vất vả vượt qua đúng đối số cho hàm tạo UseSite
.
Có cách nào tốt đẹp để thực hiện Button
tham chiếu đến Swing[M]#Button
thay vì để swing.Button
?
Sẽ đổi tên "val swing" thành một thứ khác (để loại bỏ nhập nhằng) có hoạt động không? – Rogach
Tại sao không tránh vấn đề này hoàn toàn bằng cách đặt các lớp bên trong một đối tượng thay vì một lớp khác? –
Daniel, vì các đối tượng không thể có tham số. – Rotsor