2011-12-31 17 views

Trả lời

21

hoặc TheClass.this.a, hoặc đưa ra một bí danh để this trong TheClass (gọi đó là self là phong tục)

class TheClass { self => 
  val a = "abc" 
  val traitInstance = new TheTrait { 
  def a = self.a   
  } 
} 
+0

Điều này hoạt động khi thành viên bên ngoài thuộc về một lớp hoặc đặc điểm. Tôi đoán không có cách nào để thoát khỏi phạm vi nếu tôi muốn 'a' để chỉ một giá trị được giới thiệu trong một khối chức năng? Chỉ cần đổi tên các giá trị đó. – akauppi

+0

'self' có vẻ tốt hơn' TheClass.this'. Đó là khuyến cáo? – Jus12

1

Nếu Vals ngoài/vars nằm trong một khối chức năng, một cách để vượt qua vấn đề là để bọc chúng trong một lớp vô danh, cho chúng một cái tên cụ thể. s.a.

val a=1 
val c = new { val a=a } // does not compile 

val s = new { val a=1 } 
val c = new { val a=s.a } // compiles :) 

Tất nhiên cũng chỉ sử dụng các tên khác nhau sẽ thực hiện thủ thuật, nhưng có trường hợp điều đó có nghĩa là tiền tố/postfixing với _ $ v.v.

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