Trong cuốn sách "Lập trình trong Scala" từ Martin Odersky có một ví dụ đơn giản trong chương đầu tiên:là dấu + trong + = trên toán tử tiền tố Bản đồ của =?
var capital = Map("US" -> "Washington", "France" -> "Paris")
capital += ("Japan" -> "Tokyo")
Dòng thứ hai cũng có thể được viết như
capital = capital + ("Japan" -> "Tokyo")
Tôi tò mò về + = ký hiệu. Trong lớp Bản đồ, tôi không tìm thấy phương thức + =. Tôi có thể thực hiện hành vi tương tự trong ví dụ của riêng mình như
class Foo() {
def +(value:String) = {
println(value)
this
}
}
object Main {
def main(args: Array[String]) = {
var foo = new Foo()
foo = foo + "bar"
foo += "bar"
}
}
Tôi tự hỏi mình, tại sao ký hiệu + = là có thể. Nó không hoạt động nếu phương thức trong lớp Foo được gọi là kiểm thử chẳng hạn. Điều này dẫn tôi đến ký hiệu tiền tố. Là ký hiệu tiền tố + cho dấu chỉ định (=)? Ai đó có thể giải thích hành vi này?
cảm ơn rất nhiều. Với câu trả lời của bạn, tôi cũng học được rằng điều này làm việc cho nhiều hơn một nhân vật (như ~ # ~). – Steve