0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Elm: 3つの数の加算

Posted at

準備

mkdir sum
cd sum
elm init

プログラム

src/Main.elm
module Main exposing (main)

import Browser
import Html exposing (Html, button, div, input, text)
import Html.Attributes exposing (..)
import Html.Events exposing (onInput, onClick)
import String

-- MODEL

type alias Model =
    { number1 : String
    , number2 : String
    , number3 : String
    }

init : Model
init =
    { number1 = "", number2 = "", number3 = "" }

-- UPDATE

type Msg
    = UpdateNumber1 String
    | UpdateNumber2 String
    | UpdateNumber3 String

update : Msg -> Model -> Model
update msg model =
    case msg of
        UpdateNumber1 str ->
            { model | number1 = str }

        UpdateNumber2 str ->
            { model | number2 = str }

        UpdateNumber3 str ->
            { model | number3 = str }

-- VIEW

view : Model -> Html Msg
view model =
    let
        maybeInt1 = String.toInt model.number1
        maybeInt2 = String.toInt model.number2
        maybeInt3 = String.toInt model.number3
        sumResult =
            case ( maybeInt1, maybeInt2, maybeInt3 ) of
                ( Just a, Just b, Just c ) ->
                    String.fromInt (a + b + c)

                _ ->
                    "数値を正しく入力してください"
    in
    div []
        [ div []
            [ input [ placeholder "数字1", value model.number1, onInput UpdateNumber1 ] []
            ]
        , div []
            [ input [ placeholder "数字2", value model.number2, onInput UpdateNumber2 ] []
            ]
        , div []
            [ input [ placeholder "数字3", value model.number3, onInput UpdateNumber3 ] []
            ]
        , div []
            [ text ("合計: " ++ sumResult) ]
        ]

-- MAIN

main : Program () Model Msg
main =
    Browser.sandbox { init = init, update = update, view = view }

フォルダー構造

$ tree
.
├── elm.json
└── src
    └── Main.elm

コンパイル

elm make src/Main.elm

実行結果

$ elm make src/Main.elm
Dependencies ready!         
Success! Compiled 1 module.

    Main ───> index.html

実行

elm reactor
$ elm reactor
Go to http://localhost:8000 to see your project dashboard.

ブラウザーでアクセス

image.png

数字を入力

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?