В следующем коде:Какова цель внешних и внутренних параметров функции в Scala?
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)' является совершенно законным. –