Elm:
Komennoriviparametrien lukeminen

Näin toimit:

Elm ei suoraan tue komentorivin argumenttien käsittelyä, koska se on suunniteltu pääasiassa web-kehitykseen. Tämän sijaan, voit käyttää JavaScriptin process.argv ominaisuutta Elm-ohjelmasta käsin käyttämällä portteja (ports). Tässä on esimerkki kuinka voit saada argumentit Elm-ohjelmaasi:

port module Main exposing (..)

import Browser
import Json.Decode as Decode

-- Määritä portti komentorivin argumenttien vastaanottamiseen
port cmdlineArgs : (List String -> msg) -> Sub msg

-- Käynnistä ohjelma
main =
    Browser.element
        { init = init
        , update = update
        , view = view
        , subscriptions = subscriptions
        }

-- Aloita tilan hallinta
init : () -> (Model, Cmd Msg)
init _ =
    -- Alusta malli ilman argumentteja
    (Model [], Cmd.none)

type Msg
    = ReceiveArgs (List String)

-- Päivitä tila
update : Msg -> Model -> (Model, Cmd Msg)
update msg model =
    case msg of
        ReceiveArgs args ->
            -- Tallenna vastaanotetut argumentit malliin
            (Model args, Cmd.none)

-- Malli, joka sisältää komentorivin argumentit
type alias Model =
    { args : List String }

-- Tilaus komentorivin argumenttien kuunteluun
subscriptions : Model -> Sub Msg
subscriptions model =
    cmdlineArgs ReceiveArgs

-- (Tyhjä) näkymä
view : Model -> Html msg
view model =
    -- Käytä tässä osaa nähdäksesi argumentit web-sivulla
    Html.text ""

Lisää JavaScript-koodisi index.html tiedostoon:

const app = Elm.Main.init({
  node: document.getElementById('elm')
});

// Lähetä komentorivin argumentit Elmiin portin kautta
app.ports.cmdlineArgs.send(process.argv);

Syväsukellus

Elm ei suoraan tarjoa tapaa lukea komentorivin syötteitä, koska kielessä keskitytään selkeisiin web-sovelluksiin. Tämä on yksi suurista erityispiirteistä Elmissä verrattuna muihin ohjelmointikieliin, jotka on suunniteltu yleiskäyttöön, kuten Python tai Node.js. Jos tarvitset komentorivin argumentteja Elmissä, yllä kuvattu JavaScript-porttiratkaisu on tyypillinen tapa yhdistää Elm ja Node.js ympäristöt.

Katso Myös