在下面的代碼:斯卡拉的外部和內部函數參數的目的是什麼?
def product(f: Int => Int)(a:Int, b:Int): Int =
if (a > b) 1
else f(a) * product(f)(a + 1, b)
參數a
和b
傳遞給內部函數,但你可以準確地寫相同的函數定義,像這樣:
def product(f: Int => Int, a:Int, b:Int): Int =
if (a > b) 1
else f(a) * product(f, a + 1, b)
那麼目的是什麼分離參數?換句話說,爲什麼這樣做:
(f: Int => Int)(a:Int, b:Int)
時,你可以更清楚地寫:
(f: Int => Int, a:Int, b:Int)
事實上它們不是「外部」或「內部」,可以有任意數量的參數列表:)'f(a:Int)(b:Double)(c:String)(d:Long)'是過時合法的。 – 2014-09-26 08:34:04