Tôi có một số câu hỏi liên quan đến chức năng thu được. Ở đây tôi hỏi từng người mộtcác câu hỏi liên quan đến chức năng đã được xử lý trong Scala
1) http://twitter.github.com/scala_school/basics.html đưa ra ví dụ về chức năng đã kết thúc - Tôi nghĩ đó là định nghĩa hàm, nhưng thực tế là không. REPL không nhận ra đây là một tuyên bố hợp lệ.
multiplyThenFilter { m: Int => m * 2 } { n: Int => n < 5}
2) Tại sao chúng ta không thể xác định hàm từ phương pháp được tham số hóa một phần? tức là, có gì sai với định nghĩa sau đây?
scala> def multiply(m: Int, n: Int): Int = m * n
multiply: (m: Int, n: Int)Int
scala> val timesTwo = multiply(2,_)
<console>:11: error: missing parameter type for expanded function ((x$1) => multiply(2, x$1))
val timesTwo = multiply(2,_)
^
3) Tại sao chúng ta không thể thực hiện chức năng được tham số hóa một phần? tức là, có gì sai với định nghĩa sau đây?
scala> (multiply(_,_)).curried
res13: Int => (Int => Int) = <function1> // THIS IS OK
scala> (multiply(20,_)).curried
<console>:12: error: missing parameter type for expanded function ((x$1) => multiply(20, x$1))
(multiply(20,_)).curried
^
1) Nó không hợp lệ, vì nó phải được khai báo trước. Ví dụ, như thế: 'def multiplyThenFilter (a: Int => Int) (b: Int => Boolean) = {Danh sách (1,2,3,4) .map (a).filter (b)} ' –
1) MultiplyThenFilter biến mất ngay bây giờ. Bạn không phải là người duy nhất bị nhầm lẫn bởi nó :-) –