は私が見てきたセットのマップ機能に設定を渡すためにどういう意味私が行うことができますスカラ:結果得</p> <pre><code>Set(1, 2, 3).map(Set(1)) </code></pre> <p>:
Set(true, false)
をしかし、私は思いましたmap関数は新しいSetではなく、別の関数しか取ることができません。何かがあれば、私はこれが一連のセットを返すと期待しています。何が起こっているのか、その結果はどういう意味ですか?
は私が見てきたセットのマップ機能に設定を渡すためにどういう意味私が行うことができますスカラ:結果得</p> <pre><code>Set(1, 2, 3).map(Set(1)) </code></pre> <p>:
Set(true, false)
をしかし、私は思いましたmap関数は新しいSetではなく、別の関数しか取ることができません。何かがあれば、私はこれが一連のセットを返すと期待しています。何が起こっているのか、その結果はどういう意味ですか?
をしかし、私は
map
機能だけで他の関数ではない新しいSet
を取ることができることを考えた:Scaladocに継承セクションを参照してください。
Set
は、です。要素からブール値への関数です。要素を渡すと、その要素がSet
の一部であるかどうかがわかります。 Set(1)
にそれぞれ各要素を通過Set(1, 2, 3)
上
Set(1, 2, 3).map(Set(1))
反復し、。私。最初に「1
がセット{1}
のメンバー」であることを尋ねると、それはという同じ質問を2
と3
と入力します。これはfalse
です。
したがって、結果はSet(true, false, false)
で、もちろんSet(true, false)
です。
同様に、シーケンスは整数から要素までの関数であり、マップはキーから値までの関数です。
Set
も機能します - Function1
を拡張します。
http://www.scala-lang.org/api/current/scala/collection/immutable/Set.html
Set[A]
延べFunction1[A, Boolean]
。Map[K, V]
PartialFunction[K, V]
Function1[K, V]
が続きます。Seq[A]
PartialFunction[Int, A]
Function1[Int, A]
が続きます。したがって、Scalaコレクションライブラリでは、セット、シーケンス、マップ自体が関数です。
apply
Set[_]
のメンバーシップをテストします。apply
メソッドMap[_, _]
は、指定されたキーに関連付けられた値を返します。 キーが存在しない場合はエラーが発生します。apply
メソッドSeq[_]
は、指定されたインデックスの要素を返します。無効なインデックスのエラーをスローします。以下の二つは等価です:
Set(1, 2, 3).map(Set(1))
Set(1, 2, 3).map(x => Set(1).contains(x))
は、したがって、次の2つです。また、
Seq(1, 2, 3).collect(someMap)
Seq(1, 2, 3) collect {
case x if someMap contains x => someMap(x)
}
そして、2次
Seq(1, 2, 3).map(someSeq)
Seq(1, 2, 3).map(x => someSeq(x))