קריאת פרמטרים משורת הפקודה

Elm:
קריאת פרמטרים משורת הפקודה

איך לעשות:

Elm לא תומך ישירות בקריאת ארגומנטים משורת הפקודה בדומה לשפות כמו Python או Node.js, מכיוון שהיא עוסקת בעיקר בפיתוח של Front-End לאינטרנט. עם זאת, אם אתה רוצה להשתמש ב-Elm עבור סקריפטינג על המחשב האישי שלך, תצטרך לעטוף אותו ב-JavaScript.

נניח שיש לנו קובץ Main.elm ואנו רוצים לעבד ארגומנטים משורת הפקודה, נוכל להשתמש בקובץ עטיפה של Node.js כזה:

const { Elm } = require('./Main.elm'); // המרת המודול של Elm ל-Node.js
let app = Elm.Main.init({
  flags: process.argv // מעביר ארגומנטים משורת הפקודה
});

app.ports.output.subscribe(function(data) {
  console.log(data);
});

הנה קוד ה-Elm שמתאים לדוגמה שלעיל:

port module Main exposing (..)

import Json.Decode as Decode

port output : String -> Cmd msg

main : Program () String msg
main =
    Platform.worker
        { init = init
        , update = \_ _ -> ( "", Cmd.none )
        , subscriptions = \_ -> Sub.none
        }

init : flags -> ( String, Cmd msg )
init flags =
    ( processArgs flags, Cmd.none )

processArgs : flags -> String
processArgs flags =
    case Decode.decodeValue Decode.string flags of
        Ok args ->
            args

        Err _ ->
            "No valid args found."

עמק הדעת

ב-Elm, המודל המקובל ליצירת קוד שפועל ביצירתיות עם המידע הנתון, הוא לשלוח את הנתונים מהסביבה החיצונית כגון Node.js או דפדפן כדגלים (flags) לפרוגרמה. זה מאפשר לנו להביא נתונים להפעלת התוכנית בצורה מבוקרת. אפשרות אחרת היא שימוש בסביבות שרת כמו elm-server-side-renderer שיכולות לקחת ארגומנטים משורת הפקודה.

בעבר, שפות תכנות אחרות כמו C או Java הפעילו את הכוח לקריאה ישירה משורת הפקודה, אבל Elm לקחה גישה שונה עם דגש על Front-End ופיתוח אפליקציות אינטרנט. עם זאת, קהילת המפתחים יצרה דרכים עקיפות לאפשר שילובים מסוג זה.

כמו כן