Elm:
Genereren van willekeurige getallen
Hoe:
De pure functionele aard van Elm betekent dat je niet direct willekeurige getallen kunt genereren zoals je misschien zou doen in imperatieve talen. In plaats daarvan gebruik je de Random
module in combinatie met commando’s. Hier is een basisvoorbeeld dat een willekeurig geheel getal tussen 1 en 100 genereert.
Installeer eerst de Random
module met elm install elm/random
. Importeer het vervolgens in je Elm-bestand, samen met de benodigde HTML- en event-modules, zoals zo:
src/Main.elm
module Main exposing (..)
import Browser
import Html exposing (Html, button, text, div)
import Html.Events exposing (onClick)
import Random
Om dit een zelfstandig voorbeeld te maken, kun je dit sjabloon toevoegen:
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
Definieer vervolgens een commando om een willekeurig getal te genereren. Dit houdt in dat je een Msg
type instelt om het willekeurige getal te behandelen zodra het is gegenereerd, een Model
om het op te slaan, en een update-functie om alles samen te binden.
type Msg
= Generate
| NewRandom Int
type alias Model = { randomNumber : Int }
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
Generate ->
( model, Random.generate NewRandom (Random.int 1 100) )
NewRandom number ->
( { model | randomNumber = number }, Cmd.none )
Om een getallengeneratie te activeren, zou je een Generate
bericht sturen, bijvoorbeeld via een knop in je weergave:
view : Model -> Html Msg
view model =
div []
[ div [] [ text ("Willekeurig Getal: " ++ String.fromInt model.randomNumber) ]
, button [ onClick Generate ] [ text "Genereer" ]
]
Wanneer je op de “Genereer” knop klikt, wordt een willekeurig getal tussen 1 en 100 weergegeven.
Deze simplistische benadering kan worden aangepast en uitgebreid, door gebruik te maken van andere functies in de Random
module om willekeurige drijvende komma getallen, lijsten of zelfs complexe datastructuren te produceren op basis van aangepaste typen, waardoor een uitgebreide speeltuin wordt geboden voor het toevoegen van onvoorspelbaarheid aan je Elm-applicaties.
De Elm-gids gaat veel meer in detail. Er is ook een voorbeeld van het rollen van een zeszijdige dobbelsteen.