5

Tôi đang cố gắng làm cho Scala tìm đúng loại cho loại phụ thuộc vào đường dẫn đến từ loại đơn.Hiển thị loại phụ thuộc vào đường dẫn đến từ loại singleton

Thứ nhất, đây là container loại ví dụ, và một ví dụ:

trait Container { 
    type X 
    def get(): X 
} 

val container = new Container { 
    type X = String 
    def get(): X = "" 
} 

tôi có thể thấy String trong nỗ lực đầu tiên này (vì vậy tôi đã có một kịch bản làm việc):

class WithTypeParam[C <: Container](val c: C) { 
    def getFromContainer(): c.X = c.get() 
} 

val withTypeParam = new WithTypeParam[container.type](container) 

// good, I see the String! 
val foo: String = withTypeParam.getFromContainer() 

Nhưng khi không có tham số kiểu, điều này không hoạt động nữa.

class NoTypeParam(val c: Container) { 
    def getFromContainer(): c.X = c.get() 
} 

val noTypeParam = new NoTypeParam(container) 

// this does *not* compile 
val bar: String = noTypeParam.getFromContainer() 

Có ai biết tại sao tham số kiểu là cần thiết không?

Trả lời

1

Xem this chủ đề về scala-internals, cụ thể là lời giải thích của Adriaan.

Các vấn đề liên quan