Elm:
Організація коду в функції

Як це робити:

Ось частка коду на 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 немає об’єктів чи класів. Ви організовуєте код за допомогою функцій і модулів замість класів та інстанцій.

Дивіться також

Щоб глибше вникнути, перегляньте ці ресурси: