問題タブ [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.
list - Scalaのケースクラスとリスト
私はScalaにまったく慣れていません。現在、Standard MLで作成したパーサーをScalaに移植しようとしていますが、次のコードで問題が発生しています。
SMLではtokenize()メソッドの戻り型を宣言する必要はありませんが、Scalaはそれを必要としているようで、私が提供した型にはどういうわけか満足していません(Zero、Atは無効な型であり、代わりにトークンタイプの)。また、解析フェーズの後の時点で、トークンリストとパターンを一致させたいことに注意してください。
私はウェブとstackoverflow自体を検索して、以前に同様の質問が提起されたかどうかを確認しましたが(非常に些細なことのように見えました)、どういうわけか何も見つかりませんでした。私は何か基本的な間違いを犯していると確信しています。遠慮なく私に教えてください:)
scala - Scala match 式の代替の順序はパフォーマンスの観点から重要ですか?
特に、パターン マッチングとケース クラスに関して。次の点を考慮してください。
たとえば、サンプル呼び出しsimplify(UnOp("-", UnOp("-", UnOp("-", UnOp("-", Var("x"))))))
(結果がVar("x")
) が与えられた場合、一致式の選択肢の順序はパフォーマンスに影響しますか?
サイドノート、一種の関連(私自身の観察):本当に私を驚かせることの1つsimplify
は、それが再帰関数であるということですが、私が書いた/扱った他の再帰関数とは異なり、終了を避けるために基本ケースが最後になります早い。
scala - scalaケースクラスが等しい(==)期待どおりに機能しない
私はここで愚かな何かを逃しているに違いありません。私はこれを持っています:
次に、これがtrueを出力することを期待します:
なんでそうじゃないの?
scala - Scalaのケースクラス、パターンマッチング、カレーコンストラクター
彼らはそれほどうまく混合していないようです:
以下は機能しません。
問題は、パターンマッチングとカレー引数が機能していないように見えることです。これに対する回避策はありますか?
scala - Scala:パターンマッチで特性とケースクラスを組み合わせる
いくつかのケースクラスで一致させたい。それらがわからない場合は、クラスが拡張する必要がある特定の特性に一致させたいと思います。これは次のようになります
次のテストを実行します
これは次の出力につながります
ケースクラスと特性、またはクラスのみでパターンマッチングできないのはなぜですか?
scala - 派生クラスが同じパラメーターを持つことを意図していて、オーバーライドすべきでない場合、どのようにケースクラスを拡張する必要がありますか?
これにより、ScalaがReqValidationMessageケースクラスにxmlという名前の2番目のプロパティを作成しようとするため、プロパティの名前が競合します。しかし、(MessageとReqValidationMessageの)両方のコンストラクターに同じ引数を持たせたいです。私は何をすべきか?
scala - ケースクラスを効率的にシリアル化する
私が取り組んでいるライブラリーについては、scalaクラスをシリアル化するための効率的で便利でタイプセーフなメソッドを提供する必要があります。理想は、ユーザーがケースクラスを作成できる場合であり、すべてのメンバーがシリアル化可能である限り、それもシリアル化可能であるように見えます。私はシリアル化と逆シリアル化の両方の段階でタイプを正確に知っているので、シリアル化形式の一部として「スキーマ」情報を持っている必要はありません(そしてそうする余裕はありません)(Javaオブジェクトのシリアル化のように)。
私はいくつかのアイデアで遊んでいますが、これはかなり近いようです。ここで私が目にする主な問題は、ユーザーがクラスの「適用」および「適用解除」機能をどのように指定する必要があるかということです。これらは本当に静的な関数なので、コンパイラーにそれを見つけてもらうことができるかどうか疑問に思います。
これが自己完結型の例です:
そして、私はこのような関数が必要です:
これにより、ユーザーは非常に簡単に使用できるようになります。例えば
しかし、ご覧のとおり、その最後の行は本当にかなり厄介でした。確かにそれを改善することは可能でなければなりませんか?(イエスを考えると、確かに私は「適用されない」静的メソッドを見つけることができます)
arrays - テキストベースのゲームを実行するために、scala を使用してマップをファイルにリンクする
私はプログラミングの初級クラスを受講しており、テキストベースのゲームを作成しています。実際のゲームではなく、自分の冒険を読んでいるようなものですが、マップから情報を取得する方法がよくわかりません。マップにはすべてが含まれています。部屋の情報を、それを実行するファイルに入れます。私は部屋のファイルを次のように設定しています...
部屋に番号と名前が割り当てられるように、次に説明を取得し、出口の数をリストし、それらが何であるかをリストし、次に、答えがどの番号の部屋に行くべきかをリストします。1 つは最初の 3 ビットの情報を部屋の情報として取得し、もう 1 つは出口の数を読み取り、その数の出口の配列を作成します。次に、出口とその番号を読み取ります。
私が持っているのは
おそらく簡単な答えがあることはわかっていますが、何をすべきかについて本当にかなり迷っています。ファイルを読み込む方法がわからないので、適切な部分が適切な場所に移動します。また、私は初心者なので、読んでいる内容の多くがあまり明確ではないので、できれば私の質問は明確で、誰かが私を助けてくれます。私がこれについて正しいことを行っているかどうか、実際に組み立てようとしたときにうまくいくかどうかを教えてくれます。ユーザー入力を取得し、出口の配列から入力された方向を検索し、それに関連付けられている目的地を調べます。次に、その目的地を取得し、その番号を持つマップ内の場所を探してそこに移動し、次に println(Map.description ) 次の入力を待ちますか?
scala - ケース クラスでの製品の継承
共通のスーパークラスを拡張するいくつかのケース クラスがあり、メソッドを使用してスーパークラスからフィールドにアクセスしたいと考えていますproductElement
(ベース クラスをケース クラスとして宣言しようとしましたが、ケース クラスの継承の危険性について恐ろしい警告が表示されます。それでも機能しません)。
次のような解決策を想像できます。
しかし、あまりにも醜いので、終わらせることさえできませんでした。
誰もがより良い解決策を知っていますか?
scala - Scalaでは、ケースクラスをタプルに変換する簡単な方法はありますか?
ケースクラスをタプルに変換する簡単な方法はありますか?
もちろん、これを行うための定型文を簡単に書くことはできますが、定型文がないことを意味します。
私が本当に求めているのは、ケースクラスを辞書式順序で簡単に作成する方法です。scala.math.Ordering.Implicits._をインポートすることでタプルの目標を達成できます。そして、出来上がりです。タプルには順序が定義されています。しかし、scala.math.Orderingの暗黙の要素は、一般にケースクラスでは機能しません。