Elm:
Sắp xếp mã thành các hàm

Làm thế nào:

Dưới đây là một đoạn mã Elm với một hàm đơn giản để chào mừng người dùng:

module Main exposing (..)

import Html exposing (text)

greetUser : String -> String
greetUser userName =
    "Xin chào, " ++ userName ++ "!"

main =
    text (greetUser "Casey")

Chạy nó, và bạn sẽ nhận được kết quả: “Xin chào, Casey!”

Bây giờ, giả sử bạn muốn thêm nhiều cá nhân hóa hơn. Trích xuất thêm chức năng!

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")

Bây giờ, khi bạn chạy nó: “Howdy, Casey!” Ma thuật? Không, chỉ là các hàm đang làm việc của chúng.

Sâu hơn

Ngày xửa ngày xưa, mã thường là một chuỗi dài các hướng dẫn (nghĩ về mã spaghetti). Nó là một cơn ác mộng để bảo trì. Sau đó, lập trình cấu trúc đến, và cùng với đó, là các hàm. Elm, như những người tiền nhiệm về lập trình chức năng của mình, phụ thuộc nặng nề vào hàm để tổ chức.

Bạn có thể lồng các hàm, tạo ra các closures, hoặc giữ chúng đơn giản với tính pure. Elm khuyến khích cái sau: các hàm pure với đầu vào và đầu ra được định nghĩa rõ ràng, dẫn đến việc gỡ lỗi và kiểm thử dễ dàng hơn.

Các hàm Elm cũng có thể là higher-order, nghĩa là chúng có thể nhận hoặc trả về các hàm khác. Điều này mở ra một thế giới về khả năng kết hợp. Tuy nhiên, không giống như một số ngôn ngữ khác, Elm không có chức năng quá tải; mỗi hàm phải có một tên duy nhất.

Ngoài ra, Elm áp dụng một hệ thống kiểu đặc biệt mạnh mẽ mà không chỉ kiểm tra các kiểu mà còn suy luận chúng, giảm thiểu mã lặp lại.

Khi so sánh với các lựa chọn khác như tổ chức mã theo cách thủ tục hoặc hướng đối tượng trong các ngôn ngữ khác, cách tiếp cận của Elm nhấn mạnh vào sự đơn giản và dự đoán được. Elm không có các đối tượng hay lớp. Bạn tổ chức mã bằng cách sử dụng các hàm và mô-đun thay vì các lớp và thể hiện.

Xem thêm

Để tìm hiểu sâu hơn, hãy xem các nguồn lực này: