Sono nuovo di Elm e sono stati a guardare l'esempio seguente (notare che questo è sotto il 0,17 architettura più recente, in cui l'azione è ora Comando): http://elm-lang.org/examples/randomCome aggiungere un secondo dado a questo esempio di effetti elm?
C'è un follow-up sfida per aggiungere un secondo dado per l'esempio, in modo che un singolo clic del pulsante tiri un nuovo valore per ogni dado. La mia idea è quella di cambiare il modello di tenere due valori separati, uno per ogni dado, ala
type alias Model =
{ dieFace1 : Int
, dieFace2 : Int
}
Questo funziona bene fino a ottenere al blocco di aggiornamento. Non sono sicuro di come aggiornare il generatore di numeri casuali per creare due valori. La funzione è un po 'confusa per me.
type Msg
= Roll
| NewFace Int Int
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
Roll ->
**(model, Random.generate NewFace (Random.int 1 6))** <-- not sure what to do here
NewFace newFace1 newFace2 ->
(Model newFace1 newFace2, Cmd.none)
La documentazione per la funzione Random.generate è un po 'di luce -
generano: (a -> msg) -> Generatore a -> Cmd msg
creare un comando che genererà valori casuali.
È questo anche l'approccio corretto per gestire due dadi, o c'è un modo migliore? Sono un olmo noob, per favore sii gentile :)
impressionante, grazie per i puntatori alla parte corretta della documentazione, anche. Sembra che fare n numero di tiri di dado possa comportare la parametrizzazione di un Random.list di Random.ints per contenere il numero di dadi desiderati, penso. Grazie per la risposta e i nuovi compiti. – TonyM
Grazie a Chad per aver spiegato nei dettagli. Ha funzionato come un fascino. Ho creato un sommario per i pigri: https://gist.github.com/dotcs/3b3626cfbe5b0744134f7af8edcb32c5 – dotcs
Come appare la soluzione se non ci aspettiamo una tupla di parametri 'Int', ma _two_' Int'? Cioè se 'Msg' è definito come' NewFaces Int Int 'come intuito dall'OP? –