Int => Int
1 つ目は からまでの関数を返す 1 つのパラメータ リストをInt
持つメソッドで、2 つ目は を返す 2 つのパラメータ リストを持つメソッドInt
です。
技術的には、eta 展開と呼ばれるもの (メソッドを透過的に関数値に変換できる) を使用して、2 番目の方法を部分的に適用し、最初の方法と同じ関数を生成できます。
val a = _1_sumUntil(33) // (Int => Int) => Int
val b = _2_sumUntil(33) _ // (Int => Int) => Int via eta-expansion
私のアドバイスは、2 番目のバリアントを使用し、明示的な関数値を避けることです。2 番目の利点は、eta-expansion を使用しない限り、関数値が ( に渡された関数を除いて) インスタンス化さfoldLeft
れずに適用されることです。また、読みやすさも申し分ありません。
Int => Int
メソッドの主な目的がtoInt
から渡される関数を実際に提供することである場合にのみ、最初のバージョンを使用します。
この質問とこの質問も参照してください。