問題タブ [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.
scala - Scala は java.lang.String および Case Class とのパターン マッチを行いません
こんにちは仲間の Scala プログラマー
Scala を使って数か月が経ちましたが、適切に基本的な部分に問題があります。助けてくれることを願っています。
私がこのようにやっていると、エラーが発生します:
次に、パターン マッチングの 2 行目を次のように変更するとします。
次に、エラーが発生します。
ただし、文字列定義を次のように変更すると、どちらの場合でも正常にコンパイルされます。
scala - Scala でのケース クラスの命名
ケースクラスでは、この冗長な命名を行う傾向があります。
MyTree内にノードとリーフを定義することはできませんか? ここでのベストプラクティスは何ですか?
scala - ケースクラスのコンパニオンオブジェクトがFunctionNを拡張するのはなぜですか?
ケースクラスを作成すると、コンパイラは、いくつかのケースクラスの機能を備えた対応するコンパニオンオブジェクトを作成します。apply
プライマリコンストラクタ、、、、およびに一致するファクトリequals
メソッドhashCode
ですcopy
。
奇妙なことに、この生成されたオブジェクトはFunctionNを拡張します。
これは、次の場合にのみ当てはまります。
- 手動で定義されたコンパニオンオブジェクトはありません
- パラメータリストは1つだけです
- 型引数はありません
- ケースクラスは抽象的ではありません。
このように約2年前に追加されたようです。最新の化身はここにあります。
誰かがこれを使用しますか、またはそれが追加された理由を知っていますか?静的フォワーダーメソッドを使用すると、生成されたバイトコードのサイズが少し大きくなり#toString()
、コンパニオンオブジェクトのメソッドに表示されます。
アップデート
単一のapply
メソッドを使用して手動で作成されたオブジェクトは、自動的に次のように見なされませんFunctionN
。
scala - クラスから継承するケース クラスに、コンストラクター パラメーターとして使用されている問題があります。
私はこのケースクラスを定義しています:
次に、このケース クラスで使用します。
そして、ここで使用してみてください:
次の不可解なコンパイラエラーが発生します。
私は何を間違っていますか?
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?
scala - Scala で不変のケース クラスにラベルを追加する
ラベルと goto を含むコマンドを使用して、小さな言語用のパーサーを作成しようとしています。
などはGOTO
、IFCMD
抽象クラスを拡張するケース クラスです。Core
Functional/scala-like/immutable-objecty の方法に合わせて、次のように定義するCore
のは間違っていると考えています。
しかし、私はその部分を次のように置き換えることができます<APPENDLABELTO_CORE>
:
これを行うための「スカッシュな」方法を指摘できる人はいますか?
(試してみましc copy (label=Some(l))
たが、抽象基本クラスには自動コピーコンストラクターの魔法がありません)
scala - シール クラスをインスタンス化するための暗黙的な変換
私はこの遺産を持っています
と
しかし、私はこれをしたい:
どうすればそれができますか?
scala - すべての引数を自動的にプロパティにするためだけに、Scala ですべてのクラスをケースとして定義するのは正しいですか?
私はScalaを始めています。引数をプロパティとして公開したい場合、クラスをケースクラスとして定義する必要があることを正しく理解していますか? 副作用はありませんか?
scala - ケースクラスと特性
専用の電卓を作りたい。私はそれcase class
が操作のための良い考えだと思います:
これで、入力の解析に match-case を使用できるようになりました。たぶん、私も使用する必要がありますtraits
(つまり:trait Distributivity
などtrait Commutativity
)、それは可能ですか? それは良い考えですか?
scala - ケースクラスコンストラクタへの引数をテストする方法は?
ケース クラス コンストラクターへの引数をテストし、特定のテストに失敗した場合に例外をスローしたいと考えています。独自の適用メソッド (複数の「適用」メソッド.
非ケースクラスにして、コンストラクターフィールドの適用/適用解除を自分で行うことができると思いますが、そうしないことを望んでいました。
ありがとう