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にはオブジェクトやクラスがありません。クラスやインスタンスの代わりに、関数とモジュールでコードを組織します。
参照
さらに深く掘り下げるために、これらのリソースをチェックしてください:
- 関数についてのElmの公式ガイド:https://guide.elm-lang.org/core_language.html
- より複雑な関数の例のためのElmパッケージドキュメント:https://package.elm-lang.org/
- 関数の組織化と良く合うElmの型システムについて学ぶ:https://elm-lang.org/docs/types