2011-11-15 27 views
11

Mới đối với Scala. Ngôn ngữ khá súc tích.Đa số Scala với

Tò mò tại sao việc triển khai nhiều đặc điểm yêu cầu nhiều câu lệnh "có".

Ví dụ:

class Foo extends Bar with A with B with C {} 

vs

class Foo extends Bar with A, B, C {} 
+1

nếu bạn đang đi tuyến đường đó, tại sao có "với" ở tất cả? Tại sao không phải 'Lớp Foo mở rộng Bar, A, B, C'? – dhg

+0

một lần nữa, mới để scala, nhưng afaik nhiều thừa kế với "mở rộng" không được hỗ trợ, trong khi "với" cung cấp một hình thức chức năng như vậy – virtualeyes

Trả lời

27

Xem xét việc này

class Foo[A, B] 

new Foo[Bar with D with E, Bar with E] {} 

vs

new Foo[Bar with D, E, Bar with E] {} 

Nó chỉ là không rõ ràng trong mọi trường hợp.

+0

ahhh, ok, làm rõ rõ ràng không-DRY-ness của nhiều với, cảm ơn. – virtualeyes

+0

@virtualeyes Bạn có thể nghĩ về 'với' như một dấu phẩy (khác), điều này sẽ làm cho nó rõ ràng là không có vi phạm DRY. – thedayturns

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