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 ופיתוח אפליקציות אינטרנט. עם זאת, קהילת המפתחים יצרה דרכים עקיפות לאפשר שילובים מסוג זה.
כמו כן
- Elm Ports - מידע על כיצד להתקשר עם JavaScript.
- Node.js Documentation - מידע על
process.argv
ב-Node.js.