は、どのように私は、オプションのパラメータとしてラムダ式を渡すことができ、私は事の上を通過する必要がKotlin言語kotlinのラムダ式
val max = { a: Int, b: Int ->
if (a > b)
a
else
b
}
は、オプションのパラメータと同様に
は、どのように私は、オプションのパラメータとしてラムダ式を渡すことができ、私は事の上を通過する必要がKotlin言語kotlinのラムダ式
val max = { a: Int, b: Int ->
if (a > b)
a
else
b
}
は、オプションのパラメータと同様に
ある中であなたを使用することができますmax
はデフォルトとして機能します
fun someDefault(f: (a: Int, b: Int) -> Int = max) {
f(1, 7)
// do something
}
かあなたはまた、あなたが通話のためのラムダを指定することができますかあなたはそれに
fun call() {
someDefault()
someDefault { a, b -> a * b}
someOptional()
someOptional { a, b -> a * b}
}
fun someOptional(f: ((a: Int, b: Int) -> Int)? = null) {
f?.invoke(1, 7)
}
オプションであり、パラメータとしてラムダ(デフォルトとオプション)でメソッドを定義することができます
以下は、が関数を受け入れる関数を定義し、何も供給されない場合、渡された関数のデフォルト値を指定します。
fun foobar(fn: (a: Int, b: Int) -> Int = { a: Int, b: Int -> if (a > b) a else b }) {
println(fn(42, 99))
}
独自の関数を渡すことができます。
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)
あなたは機能を省略すると、デフォルトを使用することができます。
foobar()
別の方法としては、として標準ライブラリmaxOf
関数を参照することができデフォルトでは、自分で書くのではなく、
fun foobar(fn: (a: Int, b: Int) -> Int = ::maxOf) {
println(fn(42, 99))
}
このラムダを何に渡したいですか? – zsmb13
サイドノートには、JDKには 'Math.max(a、b)'でアクセス可能な 'max'関数があります。これは同じことをします。 – Robin
あなたの質問に関しては、私はあなたが尋ねていることを本当に理解していません - '(Int、Int) - > Int'の関数をとる関数呼び出しに対して、' max'を普通の引数として渡すことができます。 – Robin