Poniżej zdefiniowano funkcję, która przyjmuje funkcję i określa wartość domyślną dla przekazanej funkcji, jeśli żadna z nich nie została podana.
fun foobar(fn: (a: Int, b: Int) -> Int = { a: Int, b: Int -> if (a > b) a else b }) {
println(fn(42, 99))
}
można przekazać własne funkcje:
val min = { a: Int, b: Int -> if (a <= b) a else b }
foobar(min)
val max = { a: Int, b: Int -> if (a > b) a else b }
foobar(max)
Można pominąć funkcję i użyć domyślnego:
foobar()
Ewentualnie można odnieść się do biblioteki standardowej maxOf
funkcji jako domyślnie zamiast pisać własne:
fun foobar(fn: (a: Int, b: Int) -> Int = ::maxOf) {
println(fn(42, 99))
}
Co chcesz przekazać temu lambda? – zsmb13
Nuta boczna, istnieje już funkcja 'max' dostępna w JDK, dostępna przez' Math.max (a, b) ', która robi to samo. – Robin
Co do twojego pytania, tak naprawdę nie rozumiem o co prosisz - możesz przekazać 'max' jako normalny argument do dowolnego wywołania funkcji, które przyjmuje funkcję postaci' (Int, Int) -> Int'. – Robin