問題タブ [implicits]

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

makefile - メイクファイルの暗黙のルール

次のメイクファイルを検討してください。

makeコマンドの出力は次のとおりです。

これで結構です。ただし、makefile が次の場合:

makeコマンドの出力は次のとおりです。

最初の例と同じになると思っていました。なぜ違うのですか?makefile のディレクトリに foo.c と foo.z の両方のファイルがあります。

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

json - Play json はサブクラスを書き込み、あいまいな暗黙的な値のエラーを返します

私はプレイフレームワークを使用しており、抽象クラスを持っています:

コンパニオン オブジェクト内に独自の暗黙的な JSON ライターを持つ

この抽象クラスをサブクラス化します。

また、そのコンパニオン オブジェクト内に独自の暗黙的な JSON ライターがあります。

Json.toJson(SubClass) を使用してサブクラス オブジェクトをシリアル化しようとすると、エラーが発生します。

あいまいさを取り除く方法はありますか?

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

scala - 適用できない暗黙の変換によってあいまいさが生じるのはなぜですか?

この例のセットアップ (Scala 2.10.3):

これはコンパイルされます:

これはしません:

暗黙的な がないためT[String]です。

したがって、scalac は からStringへの暗黙的な変換を明確に適用できると思いXます。

しかし、代わりに次のようになります。

これは意図的なものですか?scalac は、候補を列挙するときに各変換が実際に機能するかどうかを考慮する必要はありませんか?

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

json - スプレーで JSON にシリアル化しながら、暗黙的および順序付けの問題に対するより良い回避策は?

スプレー JSON ライブラリを使用して、ケース クラスを JSON にシリアル化しています。問題は、相互に再帰的な定義があることです。私はここで封印された特性をシリアライズするための例から取り組んでいます: http://www.cakesolutions.net/teamblogs/2012/11/30/spray-json-and-adts/

これが機能する簡単な例です。C の定義に注意してください:

「C」の定義を元の相互再帰的な定義に変更すると、.

明らかに、ノーとは言えません。相互に再帰的なデータ構造を持つことはできません。暗黙的なオブジェクトの解決規則が原因で、コンパイラがつまずいているようです。

これに対する回避策はありますか? オブジェクトを匿名クラス宣言に変更することで回避しました。

最後のスニペットは機能します。「implicit object」から「implicit val」への変更と、その後の匿名クラスに注意してください。

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

scala - 何もインポートされていない場合にデフォルトとして存在する Scala の暗黙的な変換はどれですか

Scalaにはデフォルトでどの暗黙が存在しますか?

私はRichStringRegex、および私が使用する他のいくつかを知っています。

  • しかし、それらすべてのリストはありますか?
  • それらはどこに実装されていますか?ソースファイル?
  • インポートの現在の状態に対して可能なすべての暗黙的な変換のリストを取得する方法はありますか?
0 投票する
2 に答える
312 参照

scala - Scala 2.11 型の差異の変更

Scala 2.10.4 では、次のようにコンパイルされます。

しかし、2.11.0 では同じことが失敗します:

反変型 U は、型 Contra trait Foo[-U,T] {type Contra = U} の型 U の不変位置に発生します。

利用可能な回避策はありますか? Scala ライブラリを 2.11 に移植しようとすると、コンパイラが大量の暗黙的な定義を取得するために反変型が必要になります (つまり、U を不変にすることは選択肢にないようです)。

ありがとう