Требуется объяснение скала с фиксированной точкой от Coursera
Я просматривал видеоролики о функциональном программировании в Scala, которые преподаются на курсах. Я наткнулся на этот код
def averageDamp(f: Double => Double)(x: Double) = (x + f(x)) / 2
и его реализация как
def sqrt(x: Double): Double = fixedPoint(averageDamp(y => y / x))(1)
но не мог использовать его в форме
averageDamp(x => x)
Это говорит, что аргумент отсутствует. Разве аргумент отсутствует в вышеприведенном случае? Кто-нибудь помогите. Заранее спасибо:)
1 ответ
Ключевое слово для этого currying
, когда averageDamp
как указано выше, averageDamp
будет ожидать два параметра. Когда вы пишете это только с первым параметром, он возвращает функционал (замыкание), который принимает другой аргумент. Вот почему это говорит argument is missing
когда ты называешь это как averageDamp(x => x)
, Вы просто вызываете функцию без параметра, который ожидает его. Чтобы на самом деле оценить значение, вы должны назвать его как averageDamp(some_function)(double_value)
,
Оформить заказ: http://www.codecommit.com/blog/scala/function-currying-in-scala