は、この演算子を使用して、ドキュメントから不明確例です:http://package.elm-lang.org/packages/elm-lang/core/3.0.0/Json-Decode#atエルムでは:=演算子は正確に何をしますか?ここで
答えて
はその(:=)が0.18.0
中置演算子
エルムでから始まるJson.Decodeから削除されていないしてください、あなたはカスタムinfix operatorsを定義することができ、その存在の目的は、コードのより読みやすいバージョンを提供するためのものです。皮肉なことに、コンセプトに慣れていないときは、それは逆です。
(:=)は、Json.Decodeパッケージによって提供されるカスタム中置演算子です。
は、カスタム中置演算子の次の例を考えてみてください:import Html exposing (text)
(<|>) : String -> String -> String
(<|>) beginning end =
beginning ++ "Bar" ++ end
main =
text ("Foo" <|> "Buz") -- "FooBarBuz"
非常に独自の中置演算子の使用を避けることをお勧めします。
オペレータ(:=)に戻りましょう。
それは我々が利用可能Decoder Primitivesのリストから、文字列やデコーダーを渡す必要があること、を意味し、それにマッピングされた文字列キーで、新しいデコーダを再実行(:=) : String -> Decoder a -> Decoder a
、のように見えるために型定義。 JavaScriptの世界では
ネイティブコード
、デコーダは型チェックを行うコールバック関数です。
例えば、ここではプリミティブデコーダStringです:
function decodeString(value) {
if (typeof value === 'string' || value instanceof String) {
return value;
}
crash('a String', value);
}
そしてここでは、(:=)オペレータのJavaScriptのと同等です:
function decodeField(field, decoder) {
return function(value) {
var subValue = value[field];
if (subValue !== undefined) {
return decoder(subValue);
}
crash("an object with field '" + field + "'", value);
};
}
TL; DR
(:=)はに文字列のキーをマップしますコールバック(それはまさにコールバックではありませんが、あなたが考えることができる最も近いものです)は、JavaScriptオブジェクトの値の型をチェックします。それをElm値に変換します。
そのような中で構築されたもののいずれかとして、あなたは上で動作し、デコーダとそこに見つかったものを解読しようとしている辞書のキーを取りますまたはあなた自身の習慣でさえも。
これは本質的に単一アクセスat
です。
at ["name"] string
に等しい:
"name" := string
それはJSON文字列で指定されたキーのデコーダを作成します。
"name" := string
「名前」の値を抽出し、string
デコーダに渡しデコーダを作成します。
- 1. この演算子は何ですか:&=
- 2. この演算子は何ですか、 "??"
- 3. このRコードスニペットで '$'演算子は何をしますか?
- 4. ここで仮想演算子()()の目的は何ですか?
- 5. このmysqlビューではsum演算子とは何ですか?
- 6. これは何ですか== - javascript演算子ですか?
- 7. これらのJavaScriptビット演算子は何をしますか?
- 8. この演算子は何を意味しますか?
- 9. HQLで<>演算子が正確に行うこと
- 10. Pythonでこの演算子 "_"の名前は何ですか?
- 11. 関数呼び出しでは、演算子は何ですか?また、演算子は何ですか?
- 12. Spark SQLのLIMIT演算子とは何ですか?ここではなぜこの演算子を使用していますか?
- 13. JavaScriptのこのビットでは、演算子は何をしますか?
- 14. これらの演算子の意味は何ですか(**、^、%、//)? - Python?
- 15. このタイプの演算子の名前は何ですか: '+ ='、 ' - ='
- 16. このes6代入演算子は何ですか?
- 17. ここで、pythonのスプラット演算子*と**は有効ですか?
- 18. これを行うには適切なRxJava演算子は何ですか?
- 19. は何ですか?:演算子
- 20. ()=>演算子とは何ですか?
- 21. JavaScriptの%演算子は何ですか?
- 22. 演算子のアリティは何ですか?
- 23. ##演算子とは何ですか?
- 24. ^=演算子、それは何ですか?
- 25. フリップフロップ演算子とは何ですか?
- 26. heck演算子「:」は何ですか?
- 27. C++の演算子は何ですか?
- 28. Scalaでは `# '演算子は何を意味しますか?
- 29. ここでピボットラベリングメソッドと "in"演算子
- 30. 演算子オーバーロード - ここ>
あなたが理解できないことやうまくいかないことを説明してください。私はあなたが何を求めているかわからない*この質問を閉じるために投票しています* – Druzion
すべての返事の後、うわあ、それはすべて明らかです。みんなに感謝します。私はこの演算子がJson.Decodeパッケージに固有であることを理解できませんでした。私はそれがコアから始まったと考えました。 –