Khi cố gắng trả lời câu hỏi này: Leave off underscore in function literal Tôi đã cố gắng viết mã ví dụ và tôi phải đối mặt với một hành vi lạ.Scala: kết quả nghịch đảo khi thoát dấu gạch dưới với :::
scala> val myList = 1::2::Nil
myList: List[Int] = List(1, 2)
scala> def concat:(List[Int]=> List[Int]) = myList:::
concat: (List[Int]) => List[Int]
scala> concat(3::Nil)
res1: List[Int] = List(3, 1, 2)
Khi tôi có câu trả lời hay khi sử dụng các cú pháp _
hoặc x=> f(x)
.
scala> def concat0:(List[Int]=> List[Int]) = x=> myList:::x
concat0: (List[Int]) => List[Int]
scala> def concat1:(List[Int]=> List[Int]) = myList::: _
concat1: (List[Int]) => List[Int]
scala> concat0(3::Nil)
res2: List[Int] = List(1, 2, 3)
scala> concat1(3::Nil)
res3: List[Int] = List(1, 2, 3)
Có một lời giải thích hợp lý tại sao myList
đưa ra sau khi 3::Nil
trong hàm concat
?
Cảm ơn bài đăng thực sự chi tiết và rõ ràng. –