Trong khi tạo bản đồ chuỗi thành các hàm một phần, tôi gặp phải hành vi không mong muốn. Khi tôi tạo ra một phần chức năng như một yếu tố bản đồ nó hoạt động tốt. Khi tôi phân bổ cho một val nó gọi thay vào đó. Cố gắng gọi kiểm tra tạo ra một lỗi. Đây có phải là dự kiến không? Tôi có làm gì đó ngu ngốc không? Hãy chú thích số check()
để xem lời gọi. Tôi đang sử dụng scala 2.7.7Khi nào một hàm scala một phần không phải là một phần chức năng?
def PartialFunctionProblem() = {
def dream()() = {
println("~Dream~");
new Exception().printStackTrace()
}
val map = scala.collection.mutable.HashMap[String,()=>Unit]()
map("dream") = dream() // partial function
map("dream")() // invokes as expected
val check = dream() // unexpected invocation
check() // error: check of type Unit does not take parameters
}
Cảm ơn sự giúp đỡ. Khi tôi thay thế giấc mơ của tôi() các cuộc gọi với giấc mơ() _ nó cư xử như tôi mong đợi. Tôi sẽ đi ra ngoài và đọc thêm về PartialFunctions vì vậy tôi không sử dụng sai thuật ngữ một lần nữa. –