問題タブ [extractor]
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 での網羅性チェックを維持するエクストラクタに置き換える
ケースクラスを使用して実装されたいくつかの異なるタイプの頂点を持つグラフのような構造を表す単純なクラス階層があります。
これにより、次のようなマッチ ブロックを記述できます。
またはこのように:
この実装には次のプロパティがあることに注意してください。
1) アークと頂点を区別する一致ブロックを記述できますが、特定の頂点タイプを区別するのではなく、頂点タイプを区別する一致ブロックも記述できます。
2) 頂点タイプ固有のマッチ ブロックと非頂点タイプ固有のマッチ ブロックの両方で、パターン マッチングの網羅性がチェックされます。
ただし、ケース クラスからの継承は非推奨であり、コンパイラは代わりにエクストラクタを使用して非リーフ ノードでのマッチングをサポートすることを提案します (つまり、上記の例では、アークと頂点を区別し、頂点タイプを区別しません)。
問題: ケース クラスの継承を使用せずに同様のクラス階層を実装することは可能ですが、上記の両方のユース ケースでコンパイラによってパターンの網羅性チェックが実行されますか?
編集: VertexType クラスにコンストラクター パラメーターを追加して、型に対してのみ一致が実行されないようにしました。
ケースクラスを使用しない現在の実装は次のとおりです。
そしてテストコード:
2 番目のブロック (VertexType2 が一致することはありません) で非網羅的な一致に関する警告が表示されることを期待していますが、それはありません。
実際、2.9.0-RC3 より前の Scala コンパイラでは警告が表示されるはずですが、RC3 以降のバージョン (2.9.0 および 2.9.0-1 を含む) では警告が表示されず、かなり混乱しています。
scala - 自家製抽出器とケースクラス抽出器の違い
Scala仕様によると、caseクラスによって構築されるエクストラクターは次のとおりです(scala仕様§5.3.2)。
実装上の理由から、ケース以外のクラスでこのエクストラクターの動作を模倣できるようにしたいと思います。ただし、私の実装では同じ動作を再現できません。
これが私が持っている違いの例です:
次の警告があります:
D
警告はケースでのみ発生し、ケースクラスのテキストアクターのケースでは発生しないことに注意してください。警告の原因/この警告を回避するために私が何をすべきかについて何か考えがありますか?
注: REPLでテストする場合、最も簡単な方法は次のとおりです。
チェックされていない警告をアクティブにするには
scala>:power
scala> settings.unchecked.value = true
上記のコードを貼り付けモードでコピーするには:
scala>:paste
[コピーペースト]
[ctrl + D]
編集: Antorasが言ったように、それはコンパイラのバグであるはずです、多分scalaバージョンが役に立つかもしれません:scala 2.9.0.1(簡単なテストの後、まだscala 2.9.1RC2にあります)
scala - Scala の代替ケースは、抽出された値の異なるタイプの構文に一致します
メソッドのrequire
はmain
失敗します。
しかし、これは大丈夫です
それはscala言語自体の制限ですか、それとも私のやり方が間違っていますか
scala - 抽出器で順序を一致させる
https://stackoverflow.com/a/6697749/1092910のように、リストの最後の要素を取得するカスタム エクストラクタを定義しました。
これは「良い」に一致します:
しかし、別の句を追加すると、突然「悪い」に一致します。
この動作の理由は何ですか?
regex - jmeterは応答データから値を取得します
Jmeterのhtml応答データから特定の値を取得することについて質問があります。正規表現とxpathエクストラクタ(以下を参照)の両方を試しましたが、うまくいきませんでした。
これは私が受け取る応答データの一部です:
そして、私はケース番号を取得しようとしています。私は正規表現抽出機能を試してきました:
しかし、null値が返されました。
そしてxpathextractorのために私はこれを試しました:
しかし、それも機能していません。私はBeanshellを使用してソースコードを文字列として取得し、数値を解析することを考えていました。その番号を取得するためのより良い方法はありますか?また、Beanshellを使用して応答データのソースコードを取得するにはどうすればよいですか?/ htmlのxpathを使用してみましたが、うまくいきません。
どうもありがとう
scala - Scalaケースクラスを使用したモデリング
パターンマッチングを使用できるケースクラスとしてRESTAPIからの応答をモデル化しようとしています。
継承を想定した場合に適していると思いましたが、これは非推奨であることがわかります。ケースクラスと継承に関連する質問がすでにあることは知っていますが、私の質問は、継承なしで次の「正しい方法」をどのようにモデル化するかについてです。
私は次の2つのケースクラスから始めました。これらは正常に機能します。
つまり、REST呼び出しは次のようなもので返されます。
次のようにパターンマッチできます。
正常に動作するなど。
問題が発生したのは次のとおりです。次のような、これらのケースクラスのヘルパー拡張機能が必要です。
これにより、次のような単純化されたパターン一致を実行できます。
また、RESTコードが直接使用して返すこともできます。
これは、動的に応答を作成する方が簡単です。
それで...
私はそれを(非推奨の警告とともに)コンパイルすることができます:
ただし、これはパターンマッチングでは機能しないようです。
これがどのように機能するかについてのアイデアはありますか?私はさまざまなアプローチを受け入れていますが、これはケースクラスの実用的な使用法を見つけるための私の試みでした
scala - Scala パターン マッチング変数バインディング
エクストラクタが を返すときに、変数を @ スタイルでバインドできないのはなぜOption[<Type>]
ですか? つまり、これは機能しません:
しかし、これは機能します!
一方、次のようにIsUpperCase
見える場合:
次に、最初の例は機能しますが、2 番目の例は機能しません! なぜこのようになっているのですか?
maven - Mavenプラグインエクストラクタとは何ですか?
「maven-plugin-plugin」の構成を指定しているMavenプラグインのビルドの構成には、エクストラクターと呼ばれるものがあります。プラグインをビルドするときにも表示されます(Applying extractor for language: java
)。
このページでは、多くの異なるエクストラクタを指定していますが、それらが何であるかについては非常に明確に説明されていませんか?
scala - 暗黙のパラメータは、適用解除では機能しません。ユビキタスパラメータをエクストラクタから隠す方法は?
どうやらエクストラクタオブジェクトのunapply/unapplySeqは、暗黙のパラメータをサポートしていません。ここで、興味深いパラメータaと、cを抽出するときに隠れておくとよい不穏に遍在するパラメータbを想定します。
[編集]:これを引き起こした私のintellij/scala-pluginインストールで何かが壊れているようです。私は説明できません。私は最近、私のIntellijで多くの奇妙な問題を抱えていました。再インストールした後、問題を再現できなくなりました。unapply / unapplySeqが暗黙のパラメーターを許可することを確認しました!ご協力いただきありがとうございます。
これは機能しません(**編集:はい、機能します):**
理想的なエクストラクタがどのようなものであるかを理解していると、Javaの人々にも直感的に意図が明確になりますが、この制限により、追加のパラメータに依存するエクストラクタオブジェクトが基本的に禁止されます。
通常、この制限をどのように処理しますか?
これまでのところ、私はそれらの4つの可能な解決策を持っています:
1)私が改善したい最も簡単な解決策:bを非表示にしないで、タプルの形式でunapplyの通常のパラメーターとして、パラメーターbをaと一緒に提供します。
クライアントコード:
ここではaからcへの脱構築が重要であるということを逸脱するノイズが多いので、私はそれが好きではありません。また、このscalaコードを実際に使用することを確信しなければならないJavaの人々は、1つの追加の合成ノベルティ(タプルブレース)に直面しています。彼らは反スカラ攻撃性を得るかもしれません「これは何ですか?...では、そもそも通常の方法を使用して、確認してみませんか?」
2)特定のBへの依存関係をカプセル化するクラス内にエクストラクタを定義し、そのインスタンスのエクストラクタをインポートします。インポートサイトではJavaの人々にとっては少し珍しいですが、パターンマッチではサイトbがうまく隠されており、何が起こっているのかが直感的にわかります。お気に入り。私が逃したいくつかの不利な点は?
クライアントコードでの使用法:
3)クライアントコードのスコープでエクストラクタオブジェクトを宣言します。bは、ローカルスコープで「b」を使用できるため非表示になっています。コードの再利用を妨げ、クライアントコードをひどく汚染します(さらに、コードを使用する前にコードを記述する必要があります)。
4)関数B => Cのオプションを適用せずに返します。これにより、bをエクストラクターに直接提供するのではなく、使用した場合の結果に、野心的なパラメーターに依存するエクストラクターのインポートと使用が可能になります。Javaの人々は、関数値の使用法に混乱している可能性があります。bは非表示ではありません。
次に、クライアントコードで:
さらなる備考:
- この回答で示唆されているように、「ビュー境界」は、エクストラクタを暗黙の変換で機能させるのに役立つ場合がありますが、これは暗黙のパラメータでは役立ちません。何らかの理由で、暗黙の変換を回避したくない。
- 「文脈の限界」を調べましたが、同じ制限があるようですよね?
database - PDFテキストエクストラクタ
主要な小売チェーン (Carrefour、Lidl など) の広告リーフレットに格納されている情報をデータベースにアップロードする必要があります。
私が見つけた最も速い解決策は次のとおりです。
メインサイトからPDFをダウンロード
クリップボードから画像をすぐに保存する pic2filex というプログラムを起動します
スナップショット ツールでさまざまな記事をすべてクリッピング
画像をデータベースにロードするプロシージャを起動し、各インサートの製品名と価格について
より速い方法はありますか?