Elm:
Generere tilfeldige tall
Hvordan:
Elms rene funksjonelle natur betyr at du ikke kan generere tilfeldige tall direkte som du kanskje ville gjort i imperativ språk. I stedet bruker du Random
-modulen i samspill med kommandoer. Her er et grunnleggende eksempel som genererer et tilfeldig heltall mellom 1 og 100.
Først, installer Random
-modulen med elm install elm/random
. Deretter importerer du den inn i din Elm-fil, sammen med de nødvendige HTML- og hendelsesmodulene, slik:
src/Main.elm
modul Main eksponerer (..)
importerer Browser
importerer Html eksponerer (Html, button, text, div)
importerer Html.Events eksponerer (onClick)
importerer Random
For at dette skal være et selvstendig eksempel, kan du legge til denne malen:
main =
Browser.element { init = init, update = update, subscriptions = subscriptions, view = view }
init : () -> (Model, Cmd Msg)
init _ =
(Model 0, Cmd.none)
subscriptions : Model -> Sub Msg
subscriptions _ =
Sub.none
Neste, definer et kommando for å generere et tilfeldig tall. Dette innebærer å sette opp en Msg
-type for å håndtere det tilfeldige tallet når det er generert, en Model
for å lagre det, og en oppdateringsfunksjon for å binde alt sammen.
type Msg
= Generate
| NewRandom Int
type alias Model = { randomNumber : Int }
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
tilfellet msg of
Generate ->
( model, Random.generate NewRandom (Random.int 1 100) )
NewRandom nummer ->
( { model | randomNumber = nummer }, Cmd.none )
For å utløse generering av et tall, ville du sendt en Generate
-melding, for eksempel gjennom en knapp i visningen din:
view : Model -> Html Msg
view model =
div []
[ div [] [ text ("Tilfeldig tall: " ++ String.fromInt model.randomNumber) ]
, button [ onClick Generate ] [ text "Generer" ]
]
Når du klikker på “Generer”-knappen, vil et tilfeldig tall mellom 1 og 100 vises.
Dette forenklede tilnærmingen kan tilpasses og utvides, som utnytter andre funksjoner i Random
-modulen for å produsere tilfeldige flyttall, lister eller til og med komplekse datatrukturer basert på egendefinerte typer, og gir et stort lekeområde for å legge til uforutsigbarhet i Elm-applikasjoner.
Elm-guiden går inn i mye mer detalj. Den har også et eksempel på å kaste en sekssidig terning.