Để hoàn chỉnh, bạn nên nói rằng "áp dụng" có thể nhận nhiều giá trị và "cập nhật" hoạt động dưới dạng "áp dụng", cho phép "ngoặc quá tải" ở phía bên tay trái của các bài tập
Class PairMap[A, B, C]{
val contents: mutable.Map[(A,B), C] = new mutable.Map[(A, B), C]();
def apply(a:A, b:B):C = contents.get((a, b))
def update(a:A, b:B, c:C):Unit = contents.put((a, b), c)
}
val foo = new PairMap[String, Int, Int]()
foo("bar", 42) = 6
println(foo("bar", 42)) // prints 6
Giá trị chính của tất cả điều này là nó giúp mọi người không đưa ra cú pháp bổ sung cho những thứ phải được đặt biệt trong ngôn ngữ C-family trước đó (ví dụ: phân bổ và tìm nạp phần tử mảng). Nó cũng tiện dụng cho các phương thức nhà máy trên các đối tượng đồng hành. Ngoài ra, hãy cẩn thận, vì đó là một trong những điều có thể dễ dàng làm cho mã của bạn quá nhỏ gọn để thực sự có thể đọc được.
Nguồn
2010-08-23 21:21:51
Cảm ơn! Rất hữu dụng – Joshua