問題タブ [reification]

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

generics - Scala のマニフェストの制限は何ですか?

Scala のManifestは、具体化されたジェネリックが JVM にないことによる型消去の問題を回避する方法です。

それらは他のいくつかの質問で議論されています。ここにいくつかあります:

コメントの 1 つは、「この機能は実験的なものであり、動作しない場合があります。それでも、それは長い道のりを歩むことができます。」(ダニエル・ソブラル)

マニフェスト アプローチが失敗するケースとその理由は何ですか?

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

scala - Scalaの場合、型消去に利点はありますか?

どういうわけか具体化を実装することを提案している、まだベーパーウェアモードのさまざまなJVM言語について多くのことを聞いてきました。私はこのしつこいことを半分覚えています(または完全に想像しましたが、どちらかわかりません)。ScalaがJVMの型消去を利用して、具体化ではできないことを実行したことをどこかで読んだと思いました。ScalaはJVMだけでなくCLRにも実装されているため、これは私にはあまり意味がありません。したがって、具体化によって何らかの制限が発生した場合、CLR実装に表示されます(CLR上のScalaが具体化を無視している場合を除く) 。

それで、Scalaの型消去には良い面がありますか、それとも具象化は軽減されない良いことですか?

0 投票する
4 に答える
5359 参照

javascript - Javascriptにないキャプチャメソッドといくつかのロジックを実行しますか?

Rubyでは、欠落しているメソッドの呼び出しをキャプチャして、その場で定義できます。

JavaScriptで達成したいのは、メソッドのないオブジェクトを作成することです。欠落しているメソッドをemit()の呼び出しに変換したい:

実行時に(固定リストから)すべてのメソッドを定義するよりも、欠落しているメソッドエラーをキャプチャしてemit(methodName)を実行する方が良いと思います。そうすれば、オブジェクトに数百または数千のイベントがある場合でも、パフォーマンスのオーバーヘッドが発生しません。

これを行うための最良の方法は何ですか?

更新:これはAPI設計であるため、次のことは避けてください。

ユーザーが通常どおりメソッドを使用できるように、これを舞台裏でどのように実行できるかを知りたいです。

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

scala - Scala での汎用イベント ハンドラーのオーバーロード

次の汎用イベント ハンドラーを定義すると、

イベントタイプはこのようなものです

これらのイベントごとにイベント ハンドラーを実装する単一のクラスを作成するにはどうすればよいでしょうか。私は試した:

しかし、Scala は、トレイトを 2 回継承することはできないと文句を言っています。

解決策を示唆するこの回答を見つけましたが、複数のクラス (ハンドラーごとに 1 つ) が必要なようです。これが本当に唯一の方法ですか、それとも単一のクラスに複数の汎用イベント ハンドラーを実装するために使用できる他の Scala コンストラクトがあるのでしょうか (つまり、ケース クラス、マニフェスト、またはその他の派手なコンストラクトを使用します)。

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

reflection - 引用、具体化、反省の関係

私は最近、引用、具体化、反省について混乱しています。誰かが彼らの関係と違い (もしあれば) について良い説明を提供できますか?

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

scala - TypeTag とは何ですか? どのように使用しますか?

TypeTags について私が知っているのは、それらがどういうわけかマニフェストを置き換えたということだけです。インターネット上の情報は少なく、私にはこの主題についての良い感覚が得られません。

ですから、例や一般的な使用例など、TypeTags に関する有用な資料へのリンクを共有していただければ幸いです。詳細な回答と説明も大歓迎です。

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

scala - reify のマクロ展開中の StackOverflowError

reify を使用する簡単なテスト マクロがあります。マクロ展開時に StackOverflowError が発生します。

なぜこれが起こるのですか?どうにか回避できないでしょうか?

編集: これは M6 で起こることです。M7で試してみたところ、次のように表示されます

実装制限: 型 Object{def (): O.type} (ClassInfoType) を具体化できません

これで理由の質問に答えましたが、これを回避する方法があるかどうかという質問はまだ残っています。

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

scala - Scala式の具体化はv2.9で機能しますか?

私はscalaリフティングで遊んでいましたが、Scalaがラムダ式を暗黙的にサポートしているように見えることを偶然発見しました。

astの右側にはラムダのASTがあります。

リテラルでは機能しないようですので、次のようにします。

動作しません。

しかし、これはします:

そのためのドキュメントが見つからないようです。暗黙の変換がアクティブになっていないようです。これはどのように作動しますか?

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

c# - 非ジェネリック クラスの C# ジェネリック メソッドは何に帰着しますか?

このようなクラスがある場合: -

この例では、すべてのタイプに ToString() があるなどの理由で T を使用する必要がないことはわかっています。これは単なる不自然な例です。私がもっと興味を持っているのは、次の観点からボンネットの下で何が起こるかです: -

私は広く(考えてください!)具体化を理解しています。つまり、さまざまなタイプのジェネリッククラスを作成する場合などです。

など。その後、コンパイル時 (または実行時?) に、指定されたジェネリック引数ごとに 1 つずつ、3 つの実際の具象型になります。最初の例のメソッド呼び出しにも同じことが当てはまりますか。つまり、単一のクラス Foo があり、具体化された 3 つの Bar メソッド (1 つは String、Int32、および Employee) でしょうか?

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

scala - 型の制約と、どちらかの joinLeft に関する具体化

joinLeftと定義されている:

  • と が既知のA場合B、 が必要implicit ev: A1 <:< Either[C, B1]です
    1. 制約 を満たしますA1 >: A, B1 >: B
    2. 具体化するA1 <: Either[C, B1]

  • そのためには、暗黙的 conforms[A1]およびconforms[Either[C, B1]]

私が今でも正しければ、 と の下限を超えている限り、 と には多くの選択肢があるように思えA1ます。だから私はscalaが私たちに and (そしてそれらが何であるか) を与える方法を知りたいと思っています.B1ABA1Either[C, B1]conforms<:<A1 <: Either[C, B1]

PS
この質問は、私の別の質問 " joinLeft [A1 >: A, B1 >: B, C]... なぜ型制約 A1 >: A および B1>: B が必要なのですか? " に多少関連していると思います。どなたでもご覧いただけますと幸いです。