Generera slumpmässiga tal

Elm:
Generera slumpmässiga tal

Hur man gör:

Elms rena funktionella natur innebär att du inte kan generera slumpmässiga nummer direkt som du kanske kan i imperativa språk. Istället använder du Random-modulen tillsammans med kommandon. Här är ett grundläggande exempel som genererar ett slumpmässigt heltal mellan 1 och 100.

Först, installera Random-modulen med elm install elm/random. Importera sedan den till din Elm-fil, tillsammans med de nödvändiga HTML- och händelsemodulerna, så här:

src/Main.elm

module Main exposing (..)

import Browser
import Html exposing (Html, button, text, div)
import Html.Events exposing (onClick)
import Random

För att detta ska vara ett självständigt exempel kan du lägga till denna mallkod:

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

Nästa steg, definiera ett kommando för att generera ett slumpmässigt nummer. Detta innebär att ställa in en Msg-typ för att hantera det slumpmässiga numret när det har genererats, en Model för att lagra det, och en uppdateringsfunktion för att sammanbinda allt.

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 )

För att utlösa en nummergenerering skulle du skicka ett Generate-meddelande, till exempel genom en knapp i din vy:

view : Model -> Html Msg
view model =
    div []
        [ div [] [ text ("Slumpmässigt Nummer: " ++ String.fromInt model.randomNumber) ]
        , button [ onClick Generate ] [ text "Generera" ]
        ]

När du klickar på “Generera”-knappen, kommer ett slumpmässigt nummer mellan 1 och 100 att visas.

Detta förenklade tillvägagångssätt kan anpassas och utvidgas, genom att utnyttja andra funktioner i Random-modulen för att producera slumpmässiga flyttal, listor eller till och med komplexa datastrukturer baserat på anpassade typer, vilket ger en stor lekplats för att lägga till oförutsägbarhet i dina Elm-applikationer.

Elm-guiden går in på mycket mer detaljer. Den har också ett exempel på att rulla en sexsidig tärning.