Expresiones de kotlin lambda como parámetro opcional

¿Cómo puedo pasar la expresión lambda como parámetro opcional en el lenguaje de Kotlin?

val max = { a: Int, b: Int -> if (a > b) a else b } 

Tengo que pasar lo de arriba es como un parámetro opcional

A continuación se define una function que acepta una function y especifica un valor pnetworkingeterminado para la function aprobada si no se proporciona ninguna.

 fun foobar(fn: (a: Int, b: Int) -> Int = { a: Int, b: Int -> if (a > b) a else b }) { println(fn(42, 99)) } 

Puede pasar sus propias funciones:

 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) 

Puede omitir la function y usar el valor pnetworkingeterminado:

 foobar() 

De forma alternativa, podría referirse a la function estándar de biblioteca maxOf como pnetworkingeterminada, en lugar de escribir la suya propia:

 fun foobar(fn: (a: Int, b: Int) -> Int = ::maxOf) { println(fn(42, 99)) } 

Puedes usar tu function max por defecto

 fun someDefault(f: (a: Int, b: Int) -> Int = max) { f(1, 7) // do something } 

o también puede definir un método con lambda como parámetro que es opcional

 fun someOptional(f: ((a: Int, b: Int) -> Int)? = null) { f?.invoke(1, 7) } 

En ambos casos (pnetworkingeterminado y opcional) puede especificar un lambda para la llamada o simplemente puede omitirlo

 fun call() { someDefault() someDefault { a, b -> a * b} someOptional() someOptional { a, b -> a * b} } 
  • Variable de lanzamiento inteligente en la solución de lambda kotlin
  • Pasar funciones a funciones en Kotlin
  • por qué kotlin lambda descomstackdo en código java es (Function0) null.INSTANCE
  • ¿Pasar lambdas a Observable.subscribe en kotlin dará como resultado pérdidas de memory?
  • ¿Cómo escribir lambdas con generics en kotlin?
  • Kotlin y Jack no son compatibles (Android Studio 2.3.2)
  • Tipo Lambda con número variable de args en Kotlin?
  • Kotlin: Declaración a Lambda
  • Función anónima asincrónica en Kotlin? (expresiones lambda)
  • ¿Por qué no puedo usar lambda para la interfaz en kotlin?
  • Kotlin: ¿usar una lambda en lugar de una interfaz funcional?