Elm_guide_HTTP
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Program]] > [[JavaScript]] > [[AltJS]] > [[Elm]] > ...
#norelated
#contents
//----------------------------------------
*HTTP [#odbf4468]
-HTTP · An Introduction to Elm https://guide.elm-lang.jp/...
サンプルコード
#code(haskell){{
-- Make a GET request to load a book called "Public Opini...
--
-- Read how it works:
-- https://guide.elm-lang.org/effects/http.html
--
import Browser
import Html exposing (Html, text, pre)
import Http
-- MAIN
main =
Browser.element
{ init = init
, update = update
, subscriptions = subscriptions
, view = view
}
-- MODEL
type Model
= Failure
| Loading
| Success String
init : () -> (Model, Cmd Msg)
init _ =
( Loading
, Http.get
{ url = "https://elm-lang.org/assets/public-opinion...
, expect = Http.expectString GotText
}
)
-- UPDATE
type Msg
= GotText (Result Http.Error String)
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
GotText result ->
case result of
Ok fullText ->
(Success fullText, Cmd.none)
Err _ ->
(Failure, Cmd.none)
-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.none
-- VIEW
view : Model -> Html Msg
view model =
case model of
Failure ->
text "I was unable to load your book."
Loading ->
text "Loading..."
Success fullText ->
pre [] [ text fullText ]
}}
パッと見、見事にサッパリ意味が分からない!
焦らずにじっくり学べば、後で意味が分かるようになるのかな...
**Cmd [#f59305f9]
-Elmのランタイムシステムに実行して欲しいことを指示するた...
-initとupdateからコマンドを発行できる。
#code(haskell){{
init : () -> (Model, Cmd Msg)
init _ =
( Loading
, Http.get
{ url = "https://elm-lang.org/assets/public-opinion...
, expect = Http.expectString GotText
}
)
}}
上記のコード片の中で、
Http.expectString
の部分がCmdに該当している。
関数定義の型注釈を見ると、init関数の返り値は、(Model, Cmd...
**Sub [#hc08cf45]
>このプログラムにおけるもう一つの新しい部分はsubscription...
Modelの情報から判断して何らかの情報に対する待ち受けするか...
今回の例ではSub.noneとして何も待ち受けする必要がないこと...
#code(haskell){{
-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.none
}}
Elmのランタイムシステムに対して、処理やデータを渡したり、...
何となく雰囲気はつかめました。
終了行:
[[Program]] > [[JavaScript]] > [[AltJS]] > [[Elm]] > ...
#norelated
#contents
//----------------------------------------
*HTTP [#odbf4468]
-HTTP · An Introduction to Elm https://guide.elm-lang.jp/...
サンプルコード
#code(haskell){{
-- Make a GET request to load a book called "Public Opini...
--
-- Read how it works:
-- https://guide.elm-lang.org/effects/http.html
--
import Browser
import Html exposing (Html, text, pre)
import Http
-- MAIN
main =
Browser.element
{ init = init
, update = update
, subscriptions = subscriptions
, view = view
}
-- MODEL
type Model
= Failure
| Loading
| Success String
init : () -> (Model, Cmd Msg)
init _ =
( Loading
, Http.get
{ url = "https://elm-lang.org/assets/public-opinion...
, expect = Http.expectString GotText
}
)
-- UPDATE
type Msg
= GotText (Result Http.Error String)
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
case msg of
GotText result ->
case result of
Ok fullText ->
(Success fullText, Cmd.none)
Err _ ->
(Failure, Cmd.none)
-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.none
-- VIEW
view : Model -> Html Msg
view model =
case model of
Failure ->
text "I was unable to load your book."
Loading ->
text "Loading..."
Success fullText ->
pre [] [ text fullText ]
}}
パッと見、見事にサッパリ意味が分からない!
焦らずにじっくり学べば、後で意味が分かるようになるのかな...
**Cmd [#f59305f9]
-Elmのランタイムシステムに実行して欲しいことを指示するた...
-initとupdateからコマンドを発行できる。
#code(haskell){{
init : () -> (Model, Cmd Msg)
init _ =
( Loading
, Http.get
{ url = "https://elm-lang.org/assets/public-opinion...
, expect = Http.expectString GotText
}
)
}}
上記のコード片の中で、
Http.expectString
の部分がCmdに該当している。
関数定義の型注釈を見ると、init関数の返り値は、(Model, Cmd...
**Sub [#hc08cf45]
>このプログラムにおけるもう一つの新しい部分はsubscription...
Modelの情報から判断して何らかの情報に対する待ち受けするか...
今回の例ではSub.noneとして何も待ち受けする必要がないこと...
#code(haskell){{
-- SUBSCRIPTIONS
subscriptions : Model -> Sub Msg
subscriptions model =
Sub.none
}}
Elmのランタイムシステムに対して、処理やデータを渡したり、...
何となく雰囲気はつかめました。
ページ名: