Требуется объяснение скала с фиксированной точкой от 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

Другие вопросы по тегам