[解決済み] Scala の "new" キーワード
2023-01-20 17:32:40
質問
Scalaでオブジェクトを作成する際、どのような場合にnewキーワードを適用すればいいのでしょうか?Javaオブジェクトをインスタンス化しようとするときだけでしょうか?
どのように解決するのですか?
を使用します。
new
キーワードを使用します。
class
自身のコンストラクタを参照したい場合に使用します。
class Foo { }
val f = new Foo
省略
new
を参照する場合は、コンパニオン・オブジェクトの
apply
メソッドを使用します。
class Foo { }
object Foo {
def apply() = new Foo
}
// Both of these are legal
val f = Foo()
val f2 = new Foo
ケースクラスを作った場合
case class Foo()
Scalaは密かにコンパニオン・オブジェクトを作成し、このように変身させます。
class Foo { }
object Foo {
def apply() = new Foo
}
というわけで、以下のようなことができます。
f = Foo()
最後に、コンパネの
apply
メソッドがコンストラクタのプロキシでなければならないというルールはないことに留意してください。
class Foo { }
object Foo {
def apply() = 7
}
// These do different things
> println(new Foo)
test@5c79cc94
> println(Foo())
7
また、Javaクラスについて言及されましたが、そうです。
を持つコンパニオンオブジェクトはほとんどありません。
apply
メソッドを持つコンパニオンオブジェクトはほとんどありません。
new
と実際の
クラスのコンストラクタを使用します。
関連
-
[解決済み] JavaScriptの「new」キーワードとは何ですか?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
-
[解決済み] シンクロナイズド」とはどういう意味ですか?
-
[解決済み] volatileキーワードは何に役立つのでしょうか?
-
[解決済み] Scalaのcase classとclassの違いは何ですか?
-
[解決済み] テンプレート型のC#ジェネリックnew()への引数の渡し方
-
[解決済み】なぜC++プログラマは'new'の使用を最小限に抑えなければならないのでしょうか?
-
[解決済み】C++でnewキーワードはいつ使うべきですか?
-
[解決済み】Scalaのimplicitを理解する。
-
[解決済み] build.sbtとbuild.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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Scalaのcase classとclassの違いは何ですか?
-
[解決済み] SBTが終了せずに実行を停止する
-
[解決済み] Scalaのリストを作成するための好ましい方法
-
[解決済み] 単純な case class の順序を定義する簡単な慣用的方法
-
[解決済み] HDFSではなく、ローカルファイルをsc.textFileで読み込む方法
-
[解決済み] Scalaでコンパニオン・オブジェクトを持つ根拠は何ですか?
-
[解決済み] Scalaでmapを使用してインデックスを受け取るにはどうしたらいいですか?
-
[解決済み] Scalaの慣用表現「flatmap that s*** 」はどこから来たのか?
-
[解決済み] Scalaで、リストから重複を取り除くにはどうしたらいいですか?
-
[解決済み] 関数型プログラミング(特にScalaとScala API)におけるreduceとfoldLeft/foldの違いとは?