Frage

Ich versuche, die vielleicht in Haskell Typ zu verwenden. Ich habe einen Nachschlag für Schlüssel, Wertetupeln, die einen vielleicht zurückgibt. Wie greife ich auf die Daten, die von Vielleicht gewickelt war? Zum Beispiel möchte ich die ganze Zahl von vielleicht mit einer anderen Ganzzahl enthielt hinzuzufügen.

War es hilfreich?

Lösung

Alternativ können Sie Mustervergleich:

case maybeValue of
  Just value -> ...
  Nothing    -> ...

Andere Tipps

könnten Sie verwenden Data.Maybe.fromMaybe, die einen Maybe a und einen Wert annimmt, zu verwenden, wenn es Nothing ist. Sie könnten die unsichere Data.Maybe.fromJust verwenden, die nur zum Absturz, wenn der Wert Nothing ist. Sie wollen wahrscheinlich Dinge in Maybe zu halten. Wenn Sie eine ganze Zahl in einem Maybe hinzufügen will, könnte man so etwas tun

f x = (+x) <$> Just 4

, das ist die gleiche wie

f x = fmap (+x) (Just 4)

f 3 wird dann Just 7 sein. (Sie können weiterhin Kette zusätzliche Berechnungen auf diese Weise.)

So wie eine Randnotiz: Da Maybe ein Monad ist, können Sie Berechnungen mit do-Notation ...

bauen
sumOfThree :: Maybe Int
sumOfThree = do
  a <- someMaybeNumber
  b <- someMaybeNumber
  c <- someMaybeNumber
  let k = 42 -- Just for fun
  return (a + b + c + k)

Beispiele für "vielleicht":

> maybe 0 (+ 42) Nothing
0
> maybe 0 (+ 42) (Just 12)
54

Viele Menschen sind gegen den Einsatz von fromJust jedoch kann es praktisch sein, wenn Sie wissen, was passieren wird, wenn die Suche fehlschlägt (Fehler !!)

Als erstes müssen Sie dies:

import Data.Maybe

Und dann Nachschlag aus einer Liste von Tupeln wird wie folgt aussehen

Data.Maybe.fromJust $ lookup key listOfTuples

Zum Beispiel erfolgreich Lookup:

Data.Maybe.fromJust $ lookup "a" [("a",1),("b",2),("c",3)]
1

Und schreckliche Versagen sieht wie folgt aus:

Data.Maybe.fromJust $ lookup "z" [("a",1),("b",2),("c",3)]
*** Exception: Maybe.fromJust: Nothing

Sorry, ich hätte es besser gegoogelt haben.

die fromMaybe Funktion ist genau das, was ich brauche. fromMaybe den Wert in Vielleicht zurück, wenn es nicht nichts ist, sonst wird es einen Standardwert fromMaybe geliefert zurückzukehren.

http : //www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/Data-Maybe.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top