[解決済み] self型アノテーションにおけるthisとselfの違い?
2022-05-15 19:34:18
質問
Scalaの様々な文献で、自己型アノテーションに"this"を使うものと、"self"を使うものがあるのを見かけますが、どちらがいいのでしょうか?
trait A { this: B => ... }
trait A { self: B => ... }
this"と"self"のどちらを使っても、何か違いがあるのでしょうか? どのような名前を使うかは全く問題ではないのでしょうか? これは同じように有効ですか?
trait A { foo: B => ... }
どのように解決するのですか?
3つの形式はすべて有効で、次のような効果があります。
B
の型として仮定されます。
this
クラスで
A
.
最初の2つのバリアントは
trait A { self: B => ... }
trait A { foo: B => ... }
導入
self
(それぞれ
foo
) のエイリアスとして
this
のエイリアスとして
A
. にアクセスするのに便利です。
this
の参照にアクセスするのに便利です。つまり、内部クラスから
self
の代わりに
A.this
にアクセスするとき
this
の参照にアクセスするとき
A
を、その中にネストされたクラスから参照することができます。例
class MyFrame extends JFrame { frame =>
getContentPane().add( new JButton( "Hide" ) {
addActionListener( new ActionListener {
def actionPerformed( e: ActionEvent ) {
// this.setVisible( false ) --> shadowed by JButton!
frame.setVisible( false )
}
})
})
}
3番目のバリアント
trait A { this: B => ... }
のエイリアスを導入しない。
this
に対する別名を導入するのではなく、単に自己の型を設定するだけです。
関連
-
[解決済み] Scalaのオブジェクトとクラスの違い
-
[解決済み] Scala vs. Groovy vs. Clojure [終了しました]。
-
[解決済み] Scalaのcase classとclassの違いは何ですか?
-
[解決済み] self-typesとtrait subclassの違いは何ですか?
-
[解決済み】Scalaにおける中括弧と括弧の正式な違い、また、どのような場合に使用すべきなのか?
-
[解決済み】コマンドラインパラメータを解析する最良の方法?[クローズド]
-
[解決済み】Scala 2.8 breakOut
-
[解決済み】Akka Kill vs. Stop vs. Poison Pill?
-
[解決済み] Scalaの識別子 "implicitly "とは?
-
[解決済み] Scalaのタイプラムダとその利点とは?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】scalacコンパイルで "object apache is not a member of package org "と表示される。
-
[解決済み] Scalaでステートメントの間にN秒待つには?
-
[解決済み] GSON JsonObject "Unsupported Operation Exception: null" getAsString
-
[解決済み] AWSのためのScala SDKまたはインターフェースはありますか?
-
[解決済み] Scalaで定期的に関数を実行する
-
[解決済み] sbtのlibraryDependenciesで言うところの++=と+=の違いは何ですか?
-
[解決済み] scalaのforeachループ
-
[解決済み】Scalaの記号演算子にはどんな意味があるの?
-
[解決済み】Scalaの型消去を回避するにはどうしたらいいですか?または、なぜ私のコレクションの型パラメータを取得することができないのですか?
-
[解決済み】ScalaでVectorを選択するのはどんなとき?