การสร้างตัวเลขสุ่ม

Elm:
การสร้างตัวเลขสุ่ม

วิธีการ:

ลักษณะธรรมชาติของ Elm ที่เป็นฟังก์ชันบริสุทธิ์หมายความว่าคุณไม่สามารถสร้างตัวเลขสุ่มโดยตรงเช่นเดียวกับในภาษาภาคบังคับได้ แทนที่จะใช้โมดูล Random ร่วมกับคำสั่ง นี่คือตัวอย่างพื้นฐานที่สร้างตัวเลขเต็มสุ่มระหว่าง 1 ถึง 100

ขั้นแรก ติดตั้งโมดูล Random ด้วย elm install elm/random จากนั้นนำเข้ามาในไฟล์ Elm ของคุณ พร้อมกับโมดูล HTML และเหตุการณ์ที่จำเป็น เช่นนี้:

src/Main.elm

module Main exposing (..)

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

เพื่อให้ตัวอย่างนี้เป็นรายการที่สมบูรณ์, คุณสามารถเพิ่มโค้ดพื้นฐานนี้:

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

ต่อไป, กำหนด คำสั่ง เพื่อสร้างตัวเลขสุ่ม ซึ่งรวมถึงการตั้งค่าประเภท Msg เพื่อจัดการกับตัวเลขสุ่มเมื่อมันถูกสร้าง, ประเภท Model เพื่อเก็บข้อมูล, และฟังก์ชันอัพเดทเพื่อเชื่อมัติดต่อกัน

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 )

เพื่อที่จะเรียกใช้การสร้างตัวเลข คุณอาจจะส่งข้อความ Generate ผ่านปุ่มในมุมมองของคุณ ดังนี้:

view : Model -> Html Msg
view model =
    div []
        [ div [] [ text ("Random Number: " ++ String.fromInt model.randomNumber) ]
        , button [ onClick Generate ] [ text "Generate" ]
        ]

เมื่อคุณคลิกปุ่ม “Generate” ตัวเลขสุ่มระหว่าง 1 ถึง 100 จะถูกแสดงขึ้น

วิธีการง่ายๆ นี้สามารถปรับแต่งและขยายได้ โดยใช้ฟังก์ชันอื่นๆ ในโมดูล Random เพื่อสร้างทศนิยมสุ่ม, รายการสุ่ม, หรือแม้กระทั่งโครงสร้างข้อมูลซับซ้อนจากชนิดข้อมูลที่กำหนดเอง ซึ่งมอบพื้นที่การเล่นที่กว้างใหญ่สำหรับการเพิ่มความไม่คาดคิดในแอปพลิเคชัน Elm ของคุณ

คู่มือ Elm มีรายละเอียดเพิ่มเติม มันยังมี ตัวอย่างการทอยลูกเต๋าหกด้าน