1
var t = 0
fun sumIntMap(hm: HashMap<Int,Int>) = hm.forEach{ x -> t+=x.value
}.let { t }
ここで関数を使ってHashmap Int値を合計しようとすると、temp var(t)をキャプチャして必要としないように最適化できないようです。ラムダ式の開発
ラムダで一時的なバールを使用して戻すにはどうすればよいですか?どのように私はそれを唯一の本当の方法(temp varを返すletを使用して)を書いたのですか?
ありがとうございます!
こんにちはは、本当に私は、ラムダから特定の値を返すの一般的な概念を見ていた:
fold
またはreduce
は、元のコードに似た事をしますこのケースx&t)letを使って私はこれをすることができますが、それはチェーンなしでラムダ自体の中で行うことができますか? –@HiLo、私はあなたが何を求めているかは100%確信していませんが、おそらくあなたは['reduce']を探しています(https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/ reduce.html)、これはもっと一般的な 'sum'です。 – chris
あなたは 'fold'や' reduce'のような連鎖呼び出しや演算子を使う必要があります。それらは 'List'でも利用可能であり、' Map'では利用できません。 あなたのコードに似ている、あなたが探しているものかもしれない、 'fold'を使って私の答えを編集しました。 – zsmb13