問題タブ [scala-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 に答える
56 参照

scala - Scala: enforcing precedence of an implicit declared in a trait

There are countless questions on this topic and a quite good, if not very precisely worded article here: Revisiting implicits without the import tax. I've read most of them, but have a problem with overriding default CanBuildFrom implicits without repeating the declarations myself. If you're familiar with scala collection library and resolution of CanBuildFrom, you know that for every scala collection trait CC[X], its companion object defines an implicit CanBuildFrom[CC[_], X, CC[X]] instance. I have introduced my own collection hierarchy, rooted in a class derived from IndexedSeq[X]:

Can I avoid declaring implicit values in companion objects of all defined traits and instead extract them to a common base trait for the companion objects? I tried having:

Unfortunately, those definitions aren't considered more specific than the one declared in object IndexedSeq. This issue is aggreviated by the fact that in reality it's not a single implicit value, but several with increasing level of requirements for X.

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

scala - StringContext を使用した汎用文字列インターポレーター

単純なカスタム文字列インターポレーターを作成しようとしていますが、型パラメーターを使用しない限り成功します。

これを機能させることはできますか?私はこれら 3 つのタイプを定義していないため、パラメトリック ポリモーフィズムを使用できません。

その疑似コード パターン マッチの型レベルで同等のものは何ですか?

最新の試み

私の最近の試みは暗黙的に使用することでしたが、そのような暗黙的なものはありません! 型推論に従って、コンパイラが返してほしい型を取得することに実際に興味があります。

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

scala - 2 つの暗黙的変数を使用して scala で変数を定義する

twitter で scalaLang による興味深い投稿を見つけました。このコードがコンパイルされて動作する場所

誰かがそれがどのように機能しているのか説明してもらえますか? 暗黙のドキュメントを読みましたが、このようなケースは見つかりませんでした。ここで何が起こっているのか説明してください。

どんな助けでも大歓迎です!

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

scala - 暗黙のパラメータが暗黙の変換になるのを避ける

次のコードの意図した出力は、数字0.

実際の出力は例外です。

調査の結果、 、 、 に提供された暗黙的なパラメーターが、 からの暗黙的な変換として意図せずに機能するようにするMap実装が示されています。apply(string): IntdoWorkmassTableString => Int

その結果、上記の呼び出しは、によって提供されるメソッドではなく、タイプtoIntの合成メソッドになります。toIntInttoIntStringOps

この種の問題を回避し、目的の出力を達成するための最良の方法は何ですか?