問題タブ [scala-primary-constructor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
7153 参照

scala - Scala のプライマリ コンストラクタでローカルの var/val をどのように定義しますか?

Scala では、クラスのプライマリ コンストラクターに明示的な本体はありませんが、クラス本体から暗黙的に定義されます。では、フィールドとローカル値 (つまり、コンストラクター メソッドに対してローカルな値) をどのように区別するのでしょうか?

たとえば、次のコード スニペットは、"Programming in Scala" のサンプル コードを修正したものです。

私の理解では、これにより、プライベート「g」、パブリック「x」および「y」の3つのフィールドを持つクラスが生成されます。ただし、g 値は x フィールドと y フィールドの計算にのみ使用され、コンストラクターのスコープ外では意味がありません。

では、この (明らかに人為的な) 例では、このコンストラクターのローカル値をどのように定義するのでしょうか?

0 投票する
1 に答える
365 参照

scala - プライマリコンストラクタ引数の代わりに抽象val

これらの2つのクラスと、インスタンスの作成方法を検討してください。

と:

なぜ後者(Person2)バージョンを好むのでしょうか?このような宣言を行うたびに、新しいサブクラスが作成されます。また、コードは少し冗長で読みにくくなりますが、2番目のイディオムはProgramminginScalaの本全体で数回使用されています。単純なフィールドに対する利点は何ですか?

0 投票する
2 に答える
34488 参照

scala - scala コンストラクターのパラメーターはデフォルトでプライベート val になりますか?

努力しています:

対:

(bar: Int)そして、それらは同じように動作しているように見えますが、それが拡張されていると言っている場所がどこにも見つからなかった(private val bar: Int)ので、私の質問は、これらは同一/類似ですか?

余談ですが、私は-Xprint:typerこれらのコード部分で使用しようとしてきましたが、2 番目の行に余分な行があることを除いて、同じコードを生成します。その余分な行をどのように読むのですか?

0 投票する
5 に答える
1139 参照

scala - プライマリ コンストラクター内の Scala ローカル変数

Scala ではどのようにプライマリ コンストラクターでローカル変数を定義できますか?

私は本からこの演習を解決する必要がありますScala for the impatient:

new Person("Fred Smith") のように、名前、スペース、および姓を含む文字列を受け入れるプライマリ コンストラクターを持つクラス Person を記述します。読み取り専用プロパティの firstName と lastName を指定します。プライマリ コンストラクターのパラメーターは、var、val、またはプレーン パラメーターのどれにする必要がありますか? なんで?

そして今のところ、私のソリューションは次のようになります。

変数の可視性をプライマリ コンストラクター スコープに制限するにはどうすればよいfirstLastAsArrですか (クラス スコープを持つようになりました)。

0 投票する
1 に答える
650 参照

scala - プライマリ コンストラクター、アンダースコア付きの値

これを試してください(Scala 2.10.3で):

何が問題なのですか? デフォルトの値の型のアンダースコアは、プライマリ コンストラクターでは使用できませんか?