問題タブ [partialfunction]

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

scala - Scala カリー化: 部分関数による空の引数を持つ関数のオーバーライド

部分関数を使用して、空の入力引数を持つ関数を実装/オーバーライドしようとしています。これは、この機能しない最小限の例で最もよく説明されています。

object creation impossible, since method build in trait TFactory of type ()T is not definedビルドのタイプが であるため、これは理にかなっています(Int)()T。私の次のアイデアはbuild、空の引数を取り、 a を返す関数に型を明示的に作成することでしたT

の型が であることは明らかbuildです() => T。驚いたことに、コンパイラは不平を言うようになりましobject creation impossible, since method build in trait TFactory of type => () => T is not definedた (型が突然 a で始まることに注意してください=>)。関数定義の最後に必死に空の括弧を追加しても役に立ちません。

これらの型が実際には同じであることをコンパイラに納得させるにはどうすればよいですか?

説明:

私の主な目標はT、ファクトリのファクトリを必要とせずに、パラメータのない初期化を実現することです。例:

結論:

抽象関数は、関数が取る必要がある引数ブロックの数を単純に決定するため、不可能だと思いますbuild。言い換えれば、関数によって抽象関数を実装することはできません。その部分適用は、実装しようとしている関数と同じ署名をたまたま持っています。

0 投票する
3 に答える
3777 参照

scala - Scala での andThen を使用した PartialFunctions の連鎖

Daily scala の例を再利用しましょう:

そして追加しましょう:

andThen はここで期待どおりに動作します。

trueiffを返しますx == 1(実際にpf2は、PartialFunction である必要はまったくありません)

ただし、次のことを期待していました。

すべてに対して返さfalseれますx(つまり、pf1 が定義されている場合、pf3 をチェックします) が、pf1 を検証せず、検証するだけです。

最終的には、pf1 andThen pf3 lift(x)常に MatchError になります。None を取得したいのですが… in などの各関数を持ち上げることでこの動作を取得できますが、pf1.lift(x).flatMap(pf3.lift)純粋な PartialFunction API を使用するより簡単な方法はありますか? (そして、各部分関数を個別に持ち上げずに?)

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

scala - PartialFunction を拡張するオブジェクトを定義し、ケースで直接実装する

私は Scala にまったく慣れていませんが、すでに気に入っています。部分関数に関するチュートリアルと記事を読みました。私が達成したいのは、PartialFunction[...,...] を拡張するオブジェクトを持ち、isDefinedAt を定義してメソッドを適用する必要なく、ケースで直接定義することです。

例えば

部分関数の有効な定義です。でもなんで書けないの

? これにより、 isDefinedAt と apply を定義する必要がなくなり、特定の (私が使用しているライブラリによって事前定義された) 型のクラスの記述が容易になります。

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

scala - scala Map を部分関数に変換するにはどうすればよいですか

現在、次のコード スニペットを使用しています。

Maps は当然、部分関数を定義する必要があるように思えます。Scalaには、マップを部分関数に変換する標準/より簡潔で明示的な方法がありますか? 多分ある種の暗黙の変換?

0 投票する
3 に答える
4575 参照

scala - map、flatmap、... 部分関数でのタプルの使用

私が行った場合:

大丈夫です。

私が行った場合:

それも大丈夫です。

しかし、もしそうなら:

効果がないでしょう。
名前付きタプルを使用するために「case」キーワードを使用する必要があるのはなぜですか?

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

scala - ケースバイタイプはscalaでどのように機能しますか?

ケース クラス、パターン マッチング、unapply、PartialFunction については知っていますが、以下のマクロ スニペットについては混乱しています。

MemberScope の Scaladoc http://www.scala-lang.org/api/2.10.4/#scala.reflect.api.Scopes $MemberScope

Collect メソッドは、メソッドがPartialFunction[Universe.Symbol, B] 見つからないことを受け入れます。また、それはケース クラスではなくトレイトであるため、ウィッチ コード コンパイラでは変換が行われます。unapplyMethodSymbol

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

scala - Scala で型パラメーターを使用してケース クラスを部分的に適用する方法

そこで、Scala のケース クラスのパラメーターとして渡したいタプルがあります。型パラメーターのないケース クラスの場合、これは簡単です。

ただし、ケース クラスに型パラメーターがある場合は、機能しないようです。

型パラメーターを使用してケース クラスを部分的に適用するにはどうすればよいですか? Scala 2.10.3 を使用しています。

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

scala - Scala: PartialFunction の関数定義が曖昧

PartialFunction の関数定義は次のとおりです。

PartialFunction を使用すると、コレクションcaseで withを使用してフィルタリングできます。collectたとえば、コレクション内の値が偶数の場合に String に変換される整数のリストと PartialFunction isEven[Int, String] がある場合。そのため、定義に戻り値の型を持つ新しいコレクションが返さ+Bれます。

私の質問は、なぜcontravariant -Aですかcovariance +B?基本的に、任意の入力から任意の出力を受け入れる機能があります。入力が任意の型または型 A のスーパー型であり、戻り値の型が B またはそのサブクラスであることを示す必要があるのはなぜですか? ただ言うことはできません: