Jestem nowy Elm i zostały patrząc na poniższym przykładzie (uwaga ta jest pod nowszej 0,17 architektury, gdzie działanie jest teraz poleceń): http://elm-lang.org/examples/randomJak dodać drugą kość do tego przykładu efektów wiąz?
Jest kontynuacją wyzwanie, aby dodać drugą matrycę przykład, tak aby pojedyncze kliknięcie przycisku rzuciło nową wartość dla każdej kości. Mój pomysł jest zmiana modelu trzymać dwie odrębne wartości, po jednym dla każdej matrycy, ala
type alias Model =
{ dieFace1 : Int
, dieFace2 : Int
}
Działa to dobrze, dopóki nie dostać się do bloku aktualizacji. Nie wiem, jak zaktualizować generator liczb losowych, aby utworzyć dwie wartości. Ta funkcja jest dla mnie nieco dezorientująca.
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)
Dokumentacja dla funkcji Random.generate jest nieco światła -
generowania: (a -> MSG) -> Generator -> Cmd msg
Utwórz polecenie wygeneruje losowe wartości.
Czy to jest poprawne podejście do obsługi dwóch kostek, czy jest lepszy sposób? Jestem noobem wiązowym, proszę bądź miły :)
Awesome, dzięki za wskazówki do właściwej części dokumentacji, zbyt. Wygląda na to, że zrobienie liczby n rzutów może wymagać sparametryzowania Losowej listy Random.intów, aby pomieścić liczbę pożądanych kości. Dzięki za odpowiedź i nową pracę domową. – TonyM
Dziękuję Chadowi za szczegółowe wyjaśnienie. Pracował jak urok. Skonfigurowałem sens dla leniwych: https://gist.github.com/dotcs/3b3626cfbe5b0744134f7af8edcb32c5 – dotcs
Jak wygląda rozwiązanie, jeśli nie oczekujemy krotki parametrów "Int", ale _two_ 'Int'? To znaczy. czy 'Msg' jest zdefiniowany jako' NewFaces Int Int' jako intuicyjny przez OP? –