Sự khác biệt giữa các loại của hai chức năng sau đây là gì?Sự khác biệt giữa các loại tương tự đã được xử lý trong Scala
def add1: Int => Int => Int = a => b => a + b
def add2(a: Int)(b: Int) = a + b
Dựa trên tuyên bố của họ, chúng dường như có cùng loại. Cả hai đều được gọi theo cách tương tự:
scala> add1(1)(2)
res2: Int = 3
scala> add2(1)(2)
res3: Int = 3
Tuy nhiên, có một sự khác biệt rõ ràng trong các loại của họ:
scala> :t add1
Int => Int => Int
scala> :t add2
(a: Int)(b: Int)Int
Bên cạnh đó, ứng dụng một phần của add1
là một chút sạch hơn của add2
.
scala> add1(1)
res4: Int => Int = <function1>
scala> add2(1)(_)
res5: Int => Int = <function1>