/ / Scala - struktura kontrolna - scala

Scala - struktura kontrolna - scala

Jestem całkowicie nowy Scala świat i próbuje zrozumieć kilka Scala koncepcje. Od tutaj Dostałem się pod kawałek Scala Code.

def twice(op: Double => Double, x: Double) = op(op(x))

i dzwoniąc twice(_ + 1, 5) zwrócenie wyniku Double = 7.0. Ale nie mogłem zrozumieć, co _ + 1 i op: Double => Double naprawdę znaczy. Czy ktoś może mi wytłumaczyć powyższy fragment kodu?

Odpowiedzi:

3 dla odpowiedzi № 1
op: Double => Double

op jest funkcją, która przyjmuje wartość typu Double i zwraca nową wartość typu Double.

_ + 1

_ jest argumentem zastępczym dla tej anonimowej funkcji (tj. ta funkcja jest opisana, ale nie ma nazwy). twice metoda ma swoją nazwę op.) Ta funkcja pobiera argument, dodaje 1 do niego i zwraca nową wartość.

Jeśli zadzwonisz twice(_ + 1, 5) możesz myśleć o tym tak: op(op(x)) -> op(op(5)) -> op(5 + 1) -> op(6) -> 6 + 1 -> 7 (lub 7.0 ponieważ jest tego typu Double)