Gibt es keine Entsprechung dafür in Elm.
Natürlich könnten Sie es selbst implementieren.
(Hinweis: Dies ist nicht eine "Summe" - Funktion, so dass es erzeugt eine Ausnahme, wenn der index out of range).
infixl 9!!(!!):[a]->Int-> a
xs !! n = head (drop n xs)
Einer besseren Weise zu definieren, eine totale Funktion, mit der Vielleicht die Daten geben.
infixl 9!!(!!):[a]->Int->Maybe a
xs !! n =if| n <0->Nothing| otherwise ->case(xs,n) of
([],_)->Nothing(x::xs,0)->Just x
(_::xs,n)-> xs !!(n-1)
Nur zum hinzufügen einer weiteren alternative (letzten (nehmen Sie die index-Liste) -> funktioniert nur, wenn der index nicht 0 oder 1, aber Sie bekommen die Idee.
Haskell wirft eine out-of-range-exception, wenn Sie (!!) out of range. Ich denke, es wäre sinnvoll, Sie zu benutzen Vielleicht, aber es scheint seltsam zu verlangen, ein element aus einer Liste und bekommen so etwas wie ein Typ, der ist nicht der Typ der Elemente in der Liste (in diesem Fall Vielleicht ein statt einen)
In neueren Versionen von Elm, können Sie definieren get n xs = List.head (List.drop n xs) und es ist eine totale Funktion, fertig. Die | syntax oben entfernt wurde, in 0.16.
(!!):Int->List a ->Maybe a
(!!) index list =--3[1,2,3,4,5,6]if(List.length list)>= index thenList.take index list --[1,2,3]|>List.reverse --[3,2,1]|>List.head --Just3elseNothing
Bekommen Sie natürlich eine Vielleicht und Sie müssen es Auspacken, wenn Sie diese Funktion verwenden. Es ist nicht garantiert, dass die Liste nicht leer ist, oder dass Sie Fragen, für eine imposible index (wie 1000) - also, warum elm-compiler zwingt Sie zum Konto für diesen Fall.
main =let
fifthElement =case5!![1,2,3,4,255,6] of //not sure how would you use it in Haskell?! But look's nice as infix function. (inspired by @Daniël Heres)Just a ->
a
Nothing->-1in
div [][ text <| toString fifthElement ]//255
Das funktioniert nicht mit Elm 0.19, richtig? :-/
Nord ja, in 0.19.. benutzerdefinierte Operatoren wurden heraus genommen.
Gibt es keine Entsprechung dafür in Elm.
Natürlich könnten Sie es selbst implementieren.
(Hinweis: Dies ist nicht eine "Summe" - Funktion, so dass es erzeugt eine Ausnahme, wenn der index out of range).
Einer besseren Weise zu definieren, eine totale Funktion, mit der Vielleicht die Daten geben.
get n xs = List.head (List.drop n xs)
und es ist eine totale Funktion, fertig. Die|
syntax oben entfernt wurde, in 0.16.Elm Hinzugefügt arrays in 0.12.1, und die Umsetzung wurde Massiv erneuert 0.19 verbessern, Richtigkeit und Leistung.
Arrays sind null-indiziert. Negative Indizes sind nicht unterstützt derzeit (Mist, ich weiß).
Beachten Sie, dass
myItem : Maybe Int
. Elm nicht alles, um zu vermeiden, runtime-Fehler, so dass out-of-bounds Zugriff gibt eine expliziteNothing
.Wenn Sie finden, sich selbst suchen, um einen index in einer Liste anstatt nehmen Sie den Kopf und Schwanz, sollten Sie erwägen, einen array.
Array-Dokumentation
negativeGet index array = get (index + length array) array
Ich habe diese verwendet:
Bekommen Sie natürlich eine Vielleicht und Sie müssen es Auspacken, wenn Sie diese Funktion verwenden. Es ist nicht garantiert, dass die Liste nicht leer ist, oder dass Sie Fragen, für eine imposible index (wie 1000) - also, warum elm-compiler zwingt Sie zum Konto für diesen Fall.