Oto niejasne przykład z docs, za pomocą tego operatora: http://package.elm-lang.org/packages/elm-lang/core/3.0.0/Json-Decode#atCo dokładnie robi operator: = w Wiąz?
Odpowiedz
Proszę nie że (:=) jest usuwany z Json.Decode począwszy od 0.18.0
operatorów Infix
W Elm, można określić niestandardową infix operators, celem ich istnienia jest zapewnienie bardziej czytelnej wersji kodu. Jak na ironię, kiedy nie znasz tej koncepcji, robi się odwrotnie.
(:=) to niestandardowy operator infiksów, dostarczany przez pakiet Json.Decode.
Proszę rozważyć następujący przykład operatora zwyczaj Infix:
import Html exposing (text)
(<|>) : String -> String -> String
(<|>) beginning end =
beginning ++ "Bar" ++ end
main =
text ("Foo" <|> "Buz") -- "FooBarBuz"
Jest wysoce zalecane, aby uniknąć wykorzystania operatorów infiksowych zwyczaj.
Wróćmy do operatora (:=).
Definicja typu wygląda na (:=) : String -> Decoder a -> Decoder a
, co oznacza, że musimy przekazać ciąg i dekoder z listy dostępnych Decoder Primitives i ponownie generuje nowy dekoder, z przypisanym do niego kluczem.
natywnego kodu
W świecie JavaScript, Dekodery są oddzwonienia funkcje, które należy wpisywać sprawdzanie.
Na przykład o to String Decoder Primitive:
function decodeString(value) {
if (typeof value === 'string' || value instanceof String) {
return value;
}
crash('a String', value);
}
I tu jest równoważne JavaScript z (:=) operatora:
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
(:=) mapuje string key do wywołanie zwrotne (nie jest to dokładnie oddzwanianie, ale jest to najbliższe, jakie można sobie wyobrazić), które sprawdzi typ wartości w obiekcie JavaScript, kiedy ustaw go na wartość Wiązu.
Potrzeba klucz do słownika jesteś działających na i próbuje rozszyfrować co się tam znaleźć w dekoder, taki jak każdy z wbudowanego w te lub nawet własnego niestandardowego.
Jest to zasadniczo pojedynczy dostęp at
.
at ["name"] string
wynosi:
"name" := string
Tworzy dekoder dla danego klucza w ciąg JSON.
"name" := string
Tworzy dekodera, który wyodrębnia się w wartości „nazwy” i przekazuje je do dekodera string
.
- 1. C# co robi operator ==?
- 2. Co dokładnie robi fillMode?
- 3. Co robi operator ^?
- 4. Co dokładnie robi plik runtime.Gosched?
- 5. co dokładnie robi metoda Activity.finish()?
- 6. Co dokładnie robi removeOnCompletion = NO?
- 7. Co dokładnie robi System.Diagnostics.Process UseShellExecute?
- 8. Co dokładnie robi -XX: -TieredCompilation?
- 9. Co dokładnie robi funkcja offsetLeftAndRight()?
- 10. Co dokładnie robi program org.apache.commons.lang.builder.CompareToBuilder?
- 11. Co dokładnie robi funkcja .select()?
- 12. Co dokładnie robi "blokada Mutex"?
- 13. Co dokładnie robi "setup.py clean"?
- 14. Co dokładnie robi dyrektywa użytkowa?
- 15. Co robi operator strzałki, "->", w Javie?
- 16. Co dokładnie robi ReferenceLoopHandling.Ignore w Newtonsoft.json?
- 17. Co dokładnie robi _malloc w montażu?
- 18. Co dokładnie robi ime() w selen?
- 19. W programie Express, co dokładnie robi app.router?
- 20. Co dokładnie robi program KFold w python?
- 21. Co dokładnie robi "blokowanie" w Perlu?
- 22. Co dokładnie robi instrukcja return w C#?
- 23. Co oznacza porównanie w Wiąz?
- 24. Co robi operator/= w języku C#?
- 25. Co robi operator karetki (^) w Pythonie?
- 26. Co robi operator strzałki ("->") w Kotlin?
- 27. Co robi operator "jest" w Pythonie?
- 28. Unary "~" operator - Co dokładnie się tutaj dzieje?
- 29. co robi Maven -> Aktualizuj projekt ... dokładnie?
- 30. Observable.Defer - potrzebuję wyjaśnienia, co dokładnie robi
Proszę wyjaśnić, czego nie rozumiesz lub co nie działa.Głosuję, aby zamknąć to pytanie jako * Niejasne, o co prosisz * – Druzion
Wow, po wszystkich odpowiedziach Wszystko jest jasne. Wielkie dzięki dla wszystkich. Nie mogłem zrozumieć, że ten operator jest specyficzny dla pakietu Json.Decode, myślałem, że pochodzi on z rdzenia. –