[解決済み】Scalaで`:_*`(コロン・アンダースコア・スター)は何をするのですか?
質問
次のようなコードがあります。 この質問 :
def addChild(n: Node, newChild: Node) = n match {
case Elem(prefix, label, attribs, scope, child @ _*) => Elem(prefix, label, attribs, scope, child ++ newChild : _*)
case _ => error("Can only add children to elements!")
}
この作品以外は、すべてクリアしていますね。
child ++ newChild : _*
何をするものなのか?
があると理解しています。
Seq[Node]
が連結され、さらに
Node
で、それで?はどうなるのでしょうか?
: _*
はどうするのですか?
どのように解決するのですか?
スプラッタが発生する。 1 を順番に表示します。
コンストラクタのシグネチャを見てみましょう。
new Elem(prefix: String, label: String, attributes: MetaData, scope: NamespaceBinding,
child: Node*)
と呼ばれるもので
new Elem(prefix, label, attributes, scope,
child1, child2, ... childN)
が、ここではシーケンスのみであり
child1
,
child2
というように、コンストラクタの入力として結果列を使用することができます。
1
これにはSLSのcute-nameがないのですが、詳細は以下の通りです。重要なのは、Scala が繰り返しパラメータを持つメソッドに引数をバインドする方法を変更するということです(これは
Node*
上記)。
は
_*
型アノテーション
は、SLS の "4.6.2 Repeated Parameters" でカバーされています。
<ブロッククオートパラメータセクションの最後の値パラメータは,"*"で囲むことができる(..., x:T ). このようなメソッド内で繰り返されるパラメータの型は、次のようになります。 シーケンス型 scala.Seq[T] です。繰り返しパラメータT * を持つメソッドは 型の可変個数の引数T 。つまり、もしメソッド m が型 (p1 : T1, .... , pn : Tn,ps : S )Uがk >=nの引数(e1, ... , ek)に適用された場合 mは、その適用において、型(p1 : T1, ... , pn : Tn,ps : S, ... , ps0S)Uを持つとみなされます。 で、ps 以降のパラメータ名がすべて S 型であることが k ¡ n 回出現する。 が新鮮です。 このルールの唯一の例外は、最後の引数が以下のようにマークされている場合です。 を経由したシーケンス引数。 型アノテーションを使用します。上記のmを引数(e1, .... , en,e0 : _ に適用する。 ) である場合、そのアプリケーションにおける m の型は次のように解釈される。 (p1 : T1, ... , pn : Tn,ps :scala.Seq[S]) **.
関連
-
[解決済み] AWSのためのScala SDKまたはインターフェースはありますか?
-
[解決済み] Scala: スライド(N,N) vs グループ化(N)
-
[解決済み] Scalaで定数メンバを定義するには?
-
[解決済み] MapのmapValuesとtransformの違いについて
-
[解決済み] Scalaのオブジェクトとクラスの違い
-
[解決済み] Scala vs. Groovy vs. Clojure [終了しました]。
-
[解決済み] Scalaのapply関数とは何ですか?
-
[解決済み】Scalaにおける中括弧と括弧の正式な違い、また、どのような場合に使用すべきなのか?
-
[解決済み】Scalaのvarとvalの定義の違いは何ですか?
-
[解決済み】Scalaはどこでimplicitを探すのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] スパークSPLラウンド&ブラウンド
-
[解決済み] Scalaでループから抜け出すにはどうしたらいいですか?
-
[解決済み] 実行時に変数の型を取得したい
-
[解決済み] Spark Implicit $ for DataFrame(データフレーム用暗黙の$)。
-
[解決済み] Scalaで「:+」は何を意味するのか
-
[解決済み] Spark - CSVファイルをDataFrameとして読み込む?
-
[解決済み】Scala 2.8のコレクション・ライブラリは「歴史上最も長い遺書」のケースか?[クローズド] Scala
-
[解決済み】Scalaの記号演算子にはどんな意味があるの?
-
[解決済み】ScalaのHigher kinded typeとは何ですか?
-
[解決済み】ScalaのfoldLeftとreduceLeftの違いについて