Tôi đang cố gắng tìm ra cách tạo phương thức nhận đối tượng lồng nhau làm đối số. Đối với một lớp lồng nhau tôi có thể làm như sau:Loại đối tượng lồng nhau trong scala
scala> class Outer {
| class Inner
| def method(i:Outer#Inner) = { "inner class" }
| }
defined class Outer
Tuy nhiên, nếu tôi cố gắng một cái gì đó như thế với một đối tượng thay vì tôi nhận được một lỗi:
scala> class Outer {
| object Inner
| def method(i:Outer#Inner) = { "inner object" }
| }
<console>:11: error: type Inner is not a member of Outer
def method(i:Outer#Inner) = { "inner object" }
gì nên loại đối số đến phương pháp để thực hiện điều này? Ngoài ra tôi muốn tham khảo loại đối tượng Inner
không khái quát đối số để nói Any
.
này không biên dịch. –
Oups, bạn cũng nên sử dụng nó, thay vì Outer. Tôi phải đọc lại lời giải thích về kiểu phụ thuộc để giải thích nó. – Nicolas
Có công trình này! Ngoài ra để sử dụng Inner trong một phương thức được định nghĩa bên ngoài lớp bên ngoài, tôi có thể định nghĩa trong Outer: 'type InnerType = this.Inner.type' Và sau đó tôi có thể định nghĩa một phương thức như:' def method (i: Outer # InnerType) = "foo" ' –