問題タブ [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.
scala - この型を Scala で表現するには? 型クラス (つまり、暗黙の) 制限を伴う実存性?
型クラスを使用してJson.toJson
functionを実装する Play フレームワークの JSON ライブラリを使用しています。(リフレクションなど、静的型付けの少ない別の手法を使用することにするかもしれませんが、Scala 型システムの学習に役立つため、今のところこのライブラリを使用したいと考えています。)
に渡す必要がある単純なケース クラスがたくさんあるtoJson
ので、それぞれに暗黙的Writes[T]
なオブジェクトを実装する必要があります。各クラスの最初のカットは次のようになります。
各クラスには同様の暗黙的な値があるため、以下のように共通部分を抽象化できます。しかし、型を宣言する方法がわからないため、これはコンパイルされません。
問題は、T
渡したい型ですmakeSimpleWrites
。T は の項目ごとに異なるため、通常の型パラメーターにすることはできませんfields
。これは存在感のあるタイプですか?私はまだこれらのうちの1つを使用していません。シンタックスで大暴れ…
これはScalaで可能ですか?もしそうなら、構文は何ですか?
scala - 型エイリアスと型ラムダの違い
この質問は、Scalaz を使用しているときに何度か遭遇した Scala の暗黙的な解決システムの制限に関するもので、私にはあまり意味がありません。以下に、問題を Scalaz を使用しないバージョンにまとめましたが、必要に応じて動機に関する詳細情報を提供できれば幸いです。
型コンストラクターに関する何かを目撃する型クラスがいくつかあるとします。
またFoo
、いくつかのインスタンスがある場合、次のインスタンスF
もあることがわかっているとします。Foo
Bar[F, _]
List
と の右側のインスタンスもありますEither
。
これで、次のように記述できるはずであることは明らかです。
または、同等に:
実際、どちらも期待どおりに機能します。
だから私は次のことを試します:
その後:
繰り返しますが、ここで驚くことはありません。しかし、私は試します:
そして、私は次のようになります:
Foo
に必要なインスタンスを推測したり、目的のインスタンスを取得するために明示的にStringOr
呼び出したりすることに問題はありません。barFoo
タイプラムダバージョンが前者では機能するが後者では機能しない場合List
との間にどのような重要な違いがあるかを特定するのに苦労しています。StringOr
Scala 2.10.0-RC5 および 2.9.2 でこれを試しました。全体に共分散を追加しても役に立ちません。
明らかな何かが欠けていますか?これを理解するのに役立つ仕様の何か、または同様の問題に関する以前の議論を誰かに教えてもらえますか?
scala - 暗黙的にクラスを取得する方法
私はいくつかのJavaコードにScalaラッパーを書いていますがmethod(cl: Class[_], name: String)
、コード内の多くのgetClassメソッドは見栄えがよくありません。
では、どうにかして暗黙のうちに囲んでいるクラスを取得できCreator.create("some name")
ますか?
scala - PriorityQueue (Scala) で Implicit Ordered を使用する際の問題
を含むデータ構造を作成しようとしてPriorityQueue
います。私はそれの非一般的なバージョンを作ることに成功しました。私が抱えている AI の問題を解決してくれるので、うまく機能していると言えます。
ここにそのスニペットがあります:
私はそれを汎用にしようとしていますが、このバージョンを使用すると問題の解決が停止します:
使用する代わりにコメントアウトされたものも試しました[T <% Ordered[T]]
を呼び出すコードは次のPQ
とおりです。
また、暗黙の定義をNode
オブジェクトに移動(およびインポート)しようとしましたが、本質的に同じ問題です。
ジェネリックバージョンで何が間違っていますか? 暗黙的なものはどこに置くべきですか?
解決策
問題は私の暗黙の定義にありませんでした。問題は、ステートメントSet
で自動的に生成された によって暗黙的な順序付けが選択されていたことです。for(...) yield(...)
これにより、生成されたセットに 1 つの状態しか含まれないという問題が発生しました。
c# - マッパーと暗黙の演算子を使用する利点はありますか?
マッパーオートマップ:
暗黙の演算子:
scala - 暗黙のパラメーターが機能しない
次のスカラ コードがあるとします。
上記のコードはうまくコンパイルされますが、最後の行 (オブジェクト Test のメソッド「値」の本体) を次のように変更すると、
コンパイラは、パラメータ F0: ValueSource[A] の暗黙的な値を見つけることができなかったと不平を言います
私の意見では、def value[A: ValueSource] は暗黙の値 "ValueSource[A]" を持っていることを意味しますが、コンパイルが失敗するのはなぜですか?
scala - 複数の暗黙パラメーターの Scala 解決
この質問に答えようとして、次のコードを思いつきました。
IntLike
は、これが に焦点を当てた問題ではないことを私に納得させるためだけにあることに注意してくださいInt
。
これは、暗黙の使用法が悪いとしても、かなり標準的なようであり、私はそれがうまく機能することを期待していました。ただし、purchaseCandles()
REPL を呼び出すと、次のエラーが発生します。
エラー: あいまいな暗黙の値: 型 => scala.collection.generic.CanBuildFrom[String,Char,String] のオブジェクト Predef の値 StringCanBuildFrom と型 Tree の値 guest の両方が予想される型 A と一致します
私は一生、これがどのように当てはまるかを見ることができません。IntLike
A は、私が発明したばかりの型である のビュー バウンドを持つようにバインドされています。REPL は、使用可能な暗黙のビューがないことを確認します。
scala> 暗黙的に[Tree => IntLike]
res14: ツリー => IntLike = function1
しかし
scala> 暗黙的に[scala.collection.generic.CanBuildFrom[文字列、文字、文字列] => IntLike]
:18: エラー: scala.collection.generic.CanBuildFrom[String,Char,String] => IntLike から利用できる暗黙的なビューはありません。
では、どのようStringCanBuildFrom
に適切なタイプにすることができますか? コンパイラは複数の従属暗黙を解決できますか?そうでない場合、なぜこのエラーが表示されるのですか?
c++ - コンパイラが暗黙的要素を定義しない条件(コンストラクタ、デストラクタ、コピーコンストラクタ、コピー代入)
これは些細な質問になるはずですが、stackoverflowで明示的に見つけることができませんでした。
以下は、ユーザーから提供されない場合、暗黙的に定義されます。
- デフォルト(パラメーターなし)コンストラクター
- コピーコンストラクタ
- コピー代入演算子
- デストラクタ
しかし、私はどこかで(今は見つけられないようですが)、コンパイラーが暗黙的にそれらを実装しないいくつかの条件があることを読みました。
これらの条件は何ですか?
scala - Scala の暗黙的なコンテキスト解決
SLS での暗黙的な解決のルールが見つかりました。
T が T1 with ... with Tn の複合型の場合、T1、...、Tn、および T 自体の部分の和集合
T がパラメータ化された型 S[T1, ..., Tn] の場合、S と T1, ..., Tn の部分の和集合
T がシングルトン型 p.type の場合、p の型の部分
T が型射影 S#U の場合、S の部分と T 自体
それ以外の場合はすべて、T 自体のみ
以下の例は、ルール 4 に基づいた暗黙の解決ですか?
ありがとう
ズラヤ
scala - タプルのリストをソートするために sortBy を使用しようとしています
私のscala eclipseワークシートでは、次のことを行います。
sortBy 関数が を与える理由、<error>
またはそれに関する詳細情報を見つける方法を理解できません。
同じコードを scala クラスに入れると、次のようになります。
このエラーが発生した他のスレッドが表示されます。しかし、それらは異なるケースです。
どんな助けでも大歓迎