1. ホーム
  2. scala

[解決済み] Scalaで関数を定義する3つの方法の違い

2023-03-07 14:47:12

質問

同じ関数を表現する3つの方法があるとして f(a) := a + 1 :

val f1 = (a:Int) => a + 1
def f2 = (a:Int) => a + 1
def f3:(Int => Int) = a => a + 1

これらの定義はどのように違うのでしょうか? REPLは明らかな違いを示していません。

scala> f1
res38: (Int) => Int = <function1>
scala> f2
res39: (Int) => Int = <function1>
scala> f3
res40: (Int) => Int = <function1>

どのように解決するのですか?

f1 は整数を受け取り、整数を返す関数です。

f2 は整数を受け取って整数を返す関数を返す、ゼロアリティのメソッドです。(あなたが f2 を入力すると、それはメソッドの呼び出しになります。 f2 .)

f3 と同じです。 f2 . そこで型推論を採用してないだけだろ。