「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go で関数カリー化を実装するにはどうすればよいですか?

Go で関数カリー化を実装するにはどうすればよいですか?

2024 年 11 月 20 日に公開
ブラウズ:837

How Can I Implement Function Currying in Go?

Go Lang での関数カリー化

関数型プログラミングでは、関数カリー化は、複数のパラメーターを持つ関数を次のように分解できる手法です。パラメータが少ない一連の関数。これにより、多くの場合、コーディングが簡素化され、関数についての推論が容易になります。

Go の部分アプリケーション

部分アプリケーションは、関数が呼び出される特定の形式のカリー化です。パラメータのサブセットを使用して、残りのパラメータで呼び出すことができる新しい関数を返します。 Go には部分アプリケーションのサポートが組み込まれていませんが、闭包を返し、初期引数をローカル変数として割り当てることで手動で実装できます。

Go の関数 Currying

Go で関数のカリー化を実行するには、関数内で作成されたクロージャにバインドされる初期値を最初のパラメータとして受け取る関数を作成できます。このクロージャは、元の関数の残りのパラメータを取得し、結合された結果を返すことができます。

たとえば、次のコード スニペットは、「add」関数のカリー化を実装する方法を示しています。

package main

import "fmt"

func main() {
    mkAdd := func(a int) func(b int) int {
        return func(b int) int {
            return a   b
        }
    }

    add3 := mkAdd(3)
    fmt.Println(add3(5)) // Output: 8
}

この例では、mkAdd 関数は整数 a をパラメータとして受け取り、整数 b をパラメータとして受け取るクロージャを返します。クロージャは a と b を加算し、結果を返します。 add3 変数には、mkAdd(3) の呼び出しによって作成されたクロージャが割り当てられます。つまり、add3 は、渡された数値に 3 を加算します。

結論

部分アプリケーションと関数カリー化の概念を使用すると、Go で柔軟で再利用可能な関数を作成できます。 Go には部分アプリケーションのサポートが組み込まれていませんが、手動で実装して同様の機能を実現できることに注意してください。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3