問題タブ [unapply]

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 投票する
1 に答える
560 参照

scala - 理解のための Scala

私は

次のようなリスト内包表記で使用したい:

しかし、エクストラクタが戻ったために「rader」の「rad」が失敗するとNoneMatchError.

理解のためのエクストラクタは、ケースを処理/無視することになっていませんNoneか、それとも何かを見逃していましたか?

私はそれをできた

しかし、それはそれほどセクシーではありません;)ありがとう

0 投票する
0 に答える
344 参照

scala - Scala-Lift: オーバーロードされた定義へのあいまいな参照 - 子クラスの unapply メソッド

コンパイラは言う

コードは次のようになります (Scala + Lift)

AbstractJsonConversion は次のようになります

オーバーロードされた unapply メソッドを親クラス AbstractJsonConversion からコンパニオン オブジェクト UserDto に移動すると、すべて問題ありません。

私はここで何が間違っているのだろうか?親クラス AbstractJsonConversion でオーバーロードされたメソッド unapply と、その子コンパニオン オブジェクトで別のメソッドを使用できないのはなぜですか?

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

scala - Scalaエクストラクタを使用して文字列をIntにキャストする

エクストラクタStringを使用してキャストしようとしています。Int私のコードは次のようになります。

ランタイムエラーが発生します:java.lang.String cannot be cast to java.lang.Integer。エクストラクタはまったく使用されていないようです。私は何をすべきか?

編集:私のユースケースは次のとおりです。playを使用していて、URLで渡されたクエリ文字列を解析したいと思います。クエリ文字列値(String)を取得して、Int、Doubleなどとして使用したいと思います。たとえば、

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

scala - Scalaでのより種類の多いタイプの推論の制限は何ですか?

次の簡略化されたサンプルコードでは、次のようになります。

applicativeOneでapplicativeTwiceを呼び出すことができ、型推論が機能します。applicativeTwice(applicativeOne)で呼び出そうとすると、推論が失敗します。

Scala2.10.0のエラーは次のとおりです。

「?F」が(適切な種類の)何かと一致しないのはなぜですか?最終的には、applicativeTwiceを暗黙の関数にしたいのですが、最初に型推論を機能させる必要があります。私は同様の質問を見てきましたが、その答えは型推論アルゴリズムの限界を示していました。しかし、このケースはかなり限定的であり、モナド変換子ではかなり厄介なものに違いないので、これを回避するためのトリックが欠けているのではないかと思います。

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

scala - ポリモーフィック unapply でエクストラクタを使用するには?

私は本当にこの小さなことを取得しません。さまざまなタイプのいくつかのサブクラスを持つ抽象クラス Box があります。例えば

Box のコンパニオン オブジェクトの apply メソッドは単純です。

だから私は書くことができます

さて、 unapply と書くと、問題が発生します。私の最初のアイデアは、次のように型にパターン マッチングを使用することでした。

}

型の消去のために、これは単に機能しません。

2 番目の試みは、型 T と各サブクラスで再定義された抽象型メンバーを持つジェネリック Box[T] でした。例えば:

したがって、unapply を次のように書き直すことができます。

残念ながら、これもうまくいきません。したがって、Box[String] の明示的な型参照も消去されるので、代わりに型マニフェストを使用する必要があると思います。たぶん次のようなもの:

このコードはコンパイル (2.10) されますが、依然として目的の暗黙的な変換は行われません。なんで?

簡単な質問ですが、リフレクションやマニフェストを使用せずに値を抽出する方法はありますか?

ポリモーフィズムとパターン マッチングを組み合わせる簡単な方法があるかどうかという質問は、私を本当に困惑させます。そうでない場合、Scala で同様の効果を達成する他の方法はありますか?

アイデアや提案はありますか?

どうもありがとうございました。

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

scala - ブール値を返すscala unapply

これを読んでもunapply()、返品についてまだ疑問がありますBoolean

Scala Programming Book (第 2 版) の 602 ページをご覧ください。例があります:

UpperCase は、return を持ち、持たないオブジェクトとして定義されてunapply()Booleanます。apply()

このようなものはどこTwiceにありますか:

質問は次のとおりです(多すぎるに違いありません、申し訳ありません):

ここで UpperCase().unapply(..) はどのように機能しますか?

を渡すDIDI@hotmail.comと、x最初のコード snippet = 'DI'.. で '@' .. を使用して 'x' をバインドし、それを に渡してie (?)UpperCase.unapplyを呼び出します。unapply(x)unapply('DIDI')True

しかし、なぜOptionですか?unapply私はそれが戻ると思う傾向がありますOption..それがどのように機能するかのようなものです。これはおそらく、通常はOption一部のデータをラップするためですが、単純なケースでは、ブール値をラップするべきではありませんか? そして、apply() がないからですか?

Boolean/を使用する場合の違いは何Optionですか? この例に基づいています。

そして、この構文: x @ UpperCase()、特定の 1 つの内部で一致している場合、構文を置き換えることになっていvalue match caseますか (そのように読むと思いますか? case) これを行う統一された方法/構文とは思えません。

通常、次のような構文 (x,y が Int であると仮定):case AA(x @ myX, y) => println("myX: " + myX)は、xにバインドすることを示します。この場合myX、基本的にmyXは .. のエイリアスです。xしかし、私たちの場合 - x @ UpperCase(). .. にxバインドし、パラメーターとして配置します。つまり、ここでのバインドは非常に抽象的/幅広い概念です..UpperCase().unapply()x

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

scala - ジェネリックを使用した Scala カスタム unapply

引数を評価し、成功した場合は値を返すカスタム汎用 unapply 関数のおかげで、エバリュエーターを要約したいと思います。

しかし、これはエラーで失敗しますerror: not found: type Eval

これを達成する方法はありますか?unapply メソッドの暗黙的な変換であるtypetagsを見てきましたが、この問題にそれらを統合する方法がわかりません。Eval を正しく定義するには?