Elm으로 매스 눈 그리기 2
9976 단어 Elm
왠지 만들 수 있는 기분이 들었으므로, 지난번 반단이 되어 있던 매스를 묘화하는 페이지를 제로부터 만들어 보았습니다.
만든 것
Elm guide에 있는 카운터 앱의 개조 같은 것으로, 매스의 수와 크기를 동적으로 변경할 수 있도록 했습니다.
JavaScript만으로 하려고 하면 꽤 귀찮다고 생각합니다만, Elm으로 쓰면 비교적 간단. 관심사에 주력해 쓸 수 있는 것을 실감했습니다.
소스 코드
소스 코드module Main exposing (Model, Msg(..), init, main, update, view)
import Browser
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (onClick)
main =
Browser.sandbox
{ init = init
, update = update
, view = view
}
-- MODEL
type alias Model =
{ size : Int
, length : Int
}
init : Model
init =
Model 1 1
-- UPDATE
type Msg
= Size Int
| Length Int
update : Msg -> Model -> Model
update msg model =
case msg of
Size val ->
{ model | size = model.size + val }
Length val ->
{ model | length = model.length + val }
-- VIEW
view : Model -> Html Msg
view model =
div []
[ div []
[ text "length"
, button [ onClick (Length -1) ] [ text "-" ]
, text (String.fromInt model.length)
, button [ onClick (Length 1) ] [ text "+" ]
]
, div []
[ text "size"
, button [ onClick (Size -1) ] [ text "-" ]
, text (String.fromInt model.size)
, button [ onClick (Size 1) ] [ text "+" ]
]
, td [ style "border" "solid thin", style "width" (String.fromInt model.size ++ "px") ] []
|> List.repeat model.length
|> tr [ style "height" (String.fromInt model.size ++ "px") ]
|> List.repeat model.length
|> table [ style "border" "solid thin", style "border-collapse" "collapse" ]
]
Reference
이 문제에 관하여(Elm으로 매스 눈 그리기 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/negiboudu/items/f9f82fe750966764d715
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
소스 코드
module Main exposing (Model, Msg(..), init, main, update, view)
import Browser
import Html exposing (..)
import Html.Attributes exposing (..)
import Html.Events exposing (onClick)
main =
Browser.sandbox
{ init = init
, update = update
, view = view
}
-- MODEL
type alias Model =
{ size : Int
, length : Int
}
init : Model
init =
Model 1 1
-- UPDATE
type Msg
= Size Int
| Length Int
update : Msg -> Model -> Model
update msg model =
case msg of
Size val ->
{ model | size = model.size + val }
Length val ->
{ model | length = model.length + val }
-- VIEW
view : Model -> Html Msg
view model =
div []
[ div []
[ text "length"
, button [ onClick (Length -1) ] [ text "-" ]
, text (String.fromInt model.length)
, button [ onClick (Length 1) ] [ text "+" ]
]
, div []
[ text "size"
, button [ onClick (Size -1) ] [ text "-" ]
, text (String.fromInt model.size)
, button [ onClick (Size 1) ] [ text "+" ]
]
, td [ style "border" "solid thin", style "width" (String.fromInt model.size ++ "px") ] []
|> List.repeat model.length
|> tr [ style "height" (String.fromInt model.size ++ "px") ]
|> List.repeat model.length
|> table [ style "border" "solid thin", style "border-collapse" "collapse" ]
]
Reference
이 문제에 관하여(Elm으로 매스 눈 그리기 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/negiboudu/items/f9f82fe750966764d715텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)