Elm:
סידור קוד לתוך פונקציות
איך לעשות:
הנה חתיכת קוד עם פונקציה פשוטה לברך משתמש:
module Main exposing (..)
import Html exposing (text)
greetUser : String -> String
greetUser userName =
"Hello, " ++ userName ++ "!"
main =
text (greetUser "Casey")
הרץ את זה, ותקבל את הפלט: “Hello, Casey!”
עכשיו, בוא נניח שאתה רוצה להוסיף פרטניזציה נוספת. הוצא יותר פונקציונליות!
module Main exposing (..)
import Html exposing (text)
greetUser : String -> String -> String
greetUser greeting userName =
greeting ++ ", " ++ userName ++ "!"
personalGreeting : String -> String
personalGreeting userName =
greetUser "Howdy" userName
main =
text (personalGreeting "Casey")
עכשיו, כשתריץ את זה: “Howdy, Casey!” קסם? לא, פשוט פונקציות עושות את שלהן.
לעומק
בימים של פעם, הקוד לעתים קרובות היה רצף אחד ארוך של הוראות (חשבו על קוד ספגטי). זה היה סיוט לתחזוק. אז הגיע התכנות המובנה, וגם פונקציות. Elm, כמו אבות תכנות פונקציונליים שלפניו, מסתמך כבדות על פונקציות לארגון.
אתה יכול לשכנע פונקציות, יוצר סגורות, או לשמור עליהם טהורות למען פשטות. Elm מעודדת את האחרון: פונקציות טהורות עם קלטים ופלטים מוגדרים היטב, מה שמוביל לאיתור באגים ובדיקות קלים יותר.
פונקציות ב-Elm יכולות גם להיות מסדר גבוה יותר, משמע שהן יכולות לקבל או להחזיר פונקציות אחרות. זה פותח עולם שלם של אפשרויות להרכבה. עם זאת, בניגוד לחלק מהשפות האחרות, ב-Elm אין טעינת פונקציות; לכל פונקציה חייב להיות שם ייחודי.
בנוסף, Elm מכתיבה מערכת טיפוסים סטטית חזקה שלא רק בודקת את הטיפוסים אלא גם מנבאת אותם, ובכך מפחיתה את הצורך בקוד פשוט.
כאשר משווים לחלופות כמו ארגון קוד פרוצדורלי או מונחה-עצמים בשפות אחרות, גישת Elm מתמקדת בפשטות ובניתן לחיזוי. ב-Elm אין עצמים או מחלקות. אתה מארגן קוד עם פונקציות ומודולים במקום מחלקות ומופעים.
ראה גם
כדי לחקור עוד יותר, בדוק את המשאבים הללו:
- המדריך הרשמי של Elm על פונקציות: https://guide.elm-lang.org/core_language.html
- תיעוד חבילת Elm לדוגמאות פונקציות מורכבות יותר: https://package.elm-lang.org/
- למידה על מערכת הטיפוסים של Elm, שמשתלבת יפה עם ארגון פונקציות: https://elm-lang.org/docs/types