2014-11-20 14 views
5

Có khả năng chuyển tiếp một số phương thức lớp tới đối tượng đóng gói không?Phương pháp chuyển tiếp hoặc đại biểu của Scala vào đối tượng được đóng gói

case class Entity(id: Int, name: String,) { 
    private lazy val lastScan = new LastScan 

    def getLastScanDate = lastScan.getLastScanDate 
    def updateLastScanDate = lastScan.updateLastScanDate 
} 

Tôi muốn tránh tạo ra def updateLastScanDate = lastScan.updateLastScanDate chỉ để chuyển tiếp các phương thức cho đối tượng được bao bọc.

Trả lời

1

Trong ngôn ngữ đơn giản, điều này là không thể. Có được sử dụng để có một plugin trình biên dịch của Kevin Wright để đạt được phái đoàn tự động này.

Dường như anh ấy đang làm việc trên phiên bản Autorproxy "Rebooted" giờ đây dựa trên macro, làm cho nó thẳng về phía trước để đưa vào dự án của bạn. Tôi đang dán ở đây một ví dụ từ các nguồn thử nghiệm của nó:

trait Bippy { 
    def bippy(i : Int): String 
} 

object SimpleBippy extends Bippy { 
    def bippy(i: Int) = i.toString 
} 

@delegating class RawParamWrapper(@proxy pivot: Bippy) 
val wrapper = new RawParamWrapper(SimpleBippy) 
assert(wrapper.bippy(42) == "42") 
Các vấn đề liên quan