foldLeft
がマップでどのように機能するかを理解したいと思います。私は、ゼロ要素と機能をfoldLeft私がリストを持っている場合、それがどのように動作するかを理解し、それを呼ぶのです:リストの代わりに地図でfoldLeftを理解する
val list1 = List(1,2,3)
list1.foldLeft(0)((a,b) => a + b)
私はlist1
の最初の要素をゼロ要素0
を追加し、追加する場所2番目の要素はlist1
などです。したがって、出力は新しい入力になり、最初の入力はゼロ要素になります。
今私はコード
val map1 = Map(1 -> 2.0, 3 -> 4.0, 5 -> 6.2) withDefaultValue 0.0
val map2 = Map(0 -> 3.0, 3 -> 7.0) withDefaultValue 0.0
def myfct(terms: Map[Int, Double], term: (Int, Double)): Map[Int, Double] = ???
map1.foldLeft(map2)(myfct)
- だからここに私の最初の要素は
Tuple2
ありましたが、map2
はMap
ないTuple2
であるため、ゼロ要素は何ですか? List
、つまりlist1
があったとき、私たちはいつも「list1
の次の要素を取った」と答えました。 ??それはこの文脈でmap1
1)ありがとう! 2)「あなたが最後の例でそれを持っているように」私には間違っているようです:ここで 'A'は' Tuple2'です。そうでない 'Map'です。訂正やコメントをお願いします。 3)最初の例で 'case(map、elem)'というだけでなく '(map、elem)'というだけではないのですか? 4) 'scala.collection.immutable.Map'も' scala.collection.immutable.Iterable'も 'foldLeft'を実装していないようです。どのようにこれらのコレクションには 'foldLeft'がありますか? – Make42
私は4)が間違っていると思うが、私はそれらの異なる実装のためにまだ少し混乱している。 – Make42
http://docs.scala-lang.org/tutorials/FAQ/collectionsから私はそうだ。リスト。それらは内部的にタプルのリストとして実装されていますか?それはあなたの投稿が示唆していることですが、それは本当ですか? (私は 'Map'のソースコードを調べる方法はわかりません。) – Make42