問題タブ [case-class]

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 に答える
12585 参照

scala - Scala は java.lang.String および Case Class とのパターン マッチを行いません

こんにちは仲間の Scala プログラマー

Scala を使って数か月が経ちましたが、適切に基本的な部分に問題があります。助けてくれることを願っています。

私がこのようにやっていると、エラーが発生します:

次に、パターン マッチングの 2 行目を次のように変更するとします。

次に、エラーが発生します。

ただし、文字列定義を次のように変更すると、どちらの場合でも正常にコンパイルされます。

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

scala - Scala でのケース クラスの命名

ケースクラスでは、この冗長な命名を行う傾向があります。

MyTreeにノードとリーフを定義することはできませんか? ここでのベストプラクティスは何ですか?

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

scala - ケースクラスのコンパニオンオブジェクトがFunctionNを拡張するのはなぜですか?

ケースクラスを作成すると、コンパイラは、いくつかのケースクラスの機能を備えた対応するコンパニオンオブジェクトを作成します。applyプライマリコンストラクタ、、、、およびに一致するファクトリequalsメソッドhashCodeですcopy

奇妙なことに、この生成されたオブジェクトはFunctionNを拡張します。

これは、次の場合にのみ当てはまります。

  • 手動で定義されたコンパニオンオブジェクトはありません
  • パラメータリストは1つだけです
  • 型引数はありません
  • ケースクラスは抽象的ではありません。

このように約2年前に追加されたようです。最新の化身はここにあります。

誰かがこれを使用しますか、またはそれが追加された理由を知っていますか?静的フォワーダーメソッドを使用すると、生成されたバイトコードのサイズが少し大きくなり#toString()、コンパニオンオブジェクトのメソッドに表示されます。

アップデート

単一のapplyメソッドを使用して手動で作成されたオブジェクトは、自動的に次のように見なされませんFunctionN

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

scala - クラスから継承するケース クラスに、コンストラクター パラメーターとして使用されている問題があります。

私はこのケースクラスを定義しています:

次に、このケース クラスで使用します。

そして、ここで使用してみてください:

次の不可解なコンパイラエラーが発生します。

私は何を間違っていますか?

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

scala - Matching case classes in scala: ~(a,b) match{case a~b=>...}

I have a case class

When I want to do pattetn matching

I can use it this way because "a" ~ 25 and ~("a", 25) are equivalent. But if I want to match new ~("a", new ~("b", 25)) by {case "a" ~ "b" ~ 25 => } troubles begin. I understand that this statements aren't equivalent. So, how new ~("a", new ~("b", 25)) can be presented? By what rules?

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

scala - Scala で不変のケース クラスにラベルを追加する

ラベルと goto を含むコマンドを使用して、小さな言語用のパーサーを作成しようとしています。

などはGOTOIFCMD抽象クラスを拡張するケース クラスです。Core

Functional/scala-like/immutable-objecty の方法に合わせて、次のように定義するCoreのは間違っていると考えています。

しかし、私はその部分を次のように置き換えることができます<APPENDLABELTO_CORE>:

これを行うための「スカッシュな」方法を指摘できる人はいますか?

(試してみましc copy (label=Some(l))たが、抽象基本クラスには自動コピーコンストラクターの魔法がありません)

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

scala - シール クラスをインスタンス化するための暗黙的な変換

私はこの遺産を持っています

しかし、私はこれをしたい:

どうすればそれができますか?

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

scala - すべての引数を自動的にプロパティにするためだけに、Scala ですべてのクラスをケースとして定義するのは正しいですか?

私はScalaを始めています。引数をプロパティとして公開したい場合、クラスをケースクラスとして定義する必要があることを正しく理解していますか? 副作用はありませんか?

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

scala - ケースクラスと特性

専用の電卓を作りたい。私はそれcase classが操作のための良い考えだと思います:

これで、入力の解析に match-case を使用できるようになりました。たぶん、私も使用する必要がありますtraits(つまり:trait Distributivityなどtrait Commutativity)、それは可能ですか? それは良い考えですか?

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

scala - ケースクラスコンストラクタへの引数をテストする方法は?

ケース クラス コンストラクターへの引数をテストし、特定のテストに失敗した場合に例外をスローしたいと考えています。独自の適用メソッド (複数の「適用」メソッド.

非ケースクラスにして、コンストラクターフィールドの適用/適用解除を自分で行うことができると思いますが、そうしないことを望んでいました。

ありがとう