Elm:
Sinh số ngẫu nhiên
Làm thế nào:
Bản chất hàm mô phỏng thuần túy của Elm nghĩa là bạn không thể tạo số ngẫu nhiên trực tiếp như bạn có thể làm trong các ngôn ngữ mệnh lệnh. Thay vào đó, bạn sử dụng module Random
kết hợp với các lệnh. Dưới đây là một ví dụ cơ bản tạo một số nguyên ngẫu nhiên từ 1 đến 100.
Đầu tiên, cài đặt module Random
bằng elm install elm/random
. Sau đó nhập nó vào tệp Elm của bạn, cùng với các module HTML và sự kiện cần thiết, như sau:
src/Main.elm
module Main exposing (..)
import Browser
import Html exposing (Html, button, text, div)
import Html.Events exposing (onClick)
import Random
Để đây là một ví dụ đầy đủ, bạn có thể thêm phần mẫu như sau:
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
Tiếp theo, xác định một lệnh để tạo số ngẫu nhiên. Điều này bao gồm thiết lập một kiểu Msg
để xử lý số ngẫu nhiên một khi nó được tạo, một Model
để lưu trữ nó, và một hàm cập nhật để kết hợp tất cả.
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 )
Để kích hoạt việc tạo số, bạn sẽ gửi một tin nhắn Generate
, ví dụ, thông qua một nút trong giao diện của bạn:
view : Model -> Html Msg
view model =
div []
[ div [] [ text ("Số Ngẫu Nhiên: " ++ String.fromInt model.randomNumber) ]
, button [ onClick Generate ] [ text "Tạo" ]
]
Khi bạn nhấn vào nút “Tạo”, một số ngẫu nhiên từ 1 đến 100 sẽ được hiển thị.
Cách tiếp cận đơn giản này có thể được điều chỉnh và mở rộng, tận dụng các hàm khác trong module Random
để tạo số thực ngẫu nhiên, danh sách, hoặc thậm chí là các cấu trúc dữ liệu phức tạp dựa trên kiểu tùy chỉnh, cung cấp một sân chơi rộng lớn để thêm tính không chắc chắn vào ứng dụng Elm của bạn.
Hướng dẫn Elm đi vào chi tiết nhiều hơn. Nó cũng có một ví dụ về việc lắc một xúc xắc sáu mặt.