「Scala3 / eでのプログラミング」という本を読んでいるときに、私は次の質問に陥りました。
まず、この本では、不変のセットから可変のセットを作成するには、次のようにコードを記述すると説明されています。
scala> import scala.collections.immutable.TreeSet
scala> val colors = List("blue", "green", "red")
scala> val treeSet = TreeSet(colors)
scala> val mutaSet = mutable.Set.empty ++= treeSet
-> mutaSet: scala.collection.mutable.Set[String] =
Set(red, blue, green, yellow)
scala> val immutaSet = Set.empty ++ mutaSet
-> immutaSet: scala.collection.immutable.Set[String] =
Set(red, blue, green, yellow)
私が理解できないのは++=
、次の行のメソッドの使用です。
val mutaSet = mutable.Set.empty ++= treeSet
よるとScalaの参照、それは我々が書くときと言うxs ++= ys
、それはすべての要素追加ys
へのxs
の値を返すxs
、つまり私たちが呼ぶ副作用がある++=
方法は。
ただし、この説明が有効であるmutable.Set.empty
ためには、左辺値か何かである必要があります。つまり、定数値ではありません。しかし、私はそうは思いません。
なぜ私たちmutable.Set.empty ++= treeSet
が有効な表現であるのか誰かが説明できますか?
xs ++ = ysと書くと、ysのすべての要素がxsに追加され、xsの値が返されると書かれています。
++=
メソッドがある場合は、このメソッドを呼び出すだけです。そして、そのような方法があるcollection.mutable.Set
ので、それがここで起こることです。
そのようなメソッドがない場合は、xs
実際に変数である必要があります(ただし、「の値を返すxs
」は「結果をに割り当てる」に置き換える必要がありますxs
)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加