Functional Programming

4549 ワード

JavaScriptで関数式プログラミングを学ぶのテキストサンプルコードがSWIFTで置換されていることを確認および整理します.😆
Functional Programming
プログラミングパターンの1つ.もう1つのプログラミングモードは、関数プログラミングとは逆のコマンドプログラミングです.
Why use
safer, easier to debug/maintain
より安全で、デバッグとメンテナンスが容易です.
オブジェクト向けのプログラミングで未知のエラー(見つけにくいエラー)に遭遇した場合、関数式プログラミングが代替案になる可能性があります.
How use
  • Do everything with functions
  • Avoid side effects (use pure functions)
  • Use Higher oder functions (functions can be inputs/outputs)
  • Don't iterate (use map, filter, reduce)
  • Avoid mutability (use immutable data)
  • Do everything with functions
    1朕関数型プログラミングはすべて関数で実現される.
    次に、コマンド式で記述されたコードを関数式プログラミングに変換する例を示します.
    // Not functional
    let name = "Lena"
    let greeting = "Hi, I'm "
    print(greeting + name)
    // Hi, I'm Lena
    
    // Functional
    func greet(name: String) -> String {
        return "Hi, I'm \(name)"
    }
    print(greet(name: "Lena"))
    // Hi, I'm Lena
    Pure functions
    2」純機能を実現する必要があります.
    pure functionは,関数が周囲のグローバル変数に依存せず,関数パラメータとしての入力のみに依存して出力を返す関数である.
    // Not pure
    let name = "Lena"
    func greet() -> String {
        return "Hi, I'm \(name)"
    }
    
    // Pure
    func greet(name: String) -> String {
        return "Hi, I'm \(name)"
    }
    Higher oder functions
    3π高次関数を用いた.
    高次関数は、関数がオブジェクトのように伝達パラメータとして伝達されるか、関数の関数を返すことができることを示します.
    関数内の関数は階層化されます.
    4関数型プログラミングでは、forまたはwhileを使用するのと比較して、mapfilterと同じ高次関数が使用される.
    Avoid mutability
    5πは不変のデータを作成し,可変性を避ける.
    これを行うには、すべてのデータをコピーすると効率が低下する可能性があるため、HashMapまたはTreeデータ構造を利用する方法があります.