紹介する
戦略モードと関数型プログラミング
Java 8でラムダ式を導入する場合、ハードコーディングから戦略モード、そして内部クラスへと段階的に最適化します。理論的には、ラムダ式を使用する関数は、戦略パターンと無名関数で実装することもできますが、なぜラムダ式を導入する必要があるのでしょうか。
私が一時的に理解していることには、次の側面が含まれます。
- コードは読みやすくなく、構造も複雑です。
- 追加の戦略ごとに新しい実装クラスが必要ですが、これは維持が容易ではありません。
- 10,000の状況がある場合、10,000の新しい戦略または匿名クラスを作成しますか?
関数型プログラミングは上記の問題を簡単に解決することができます。関数型プログラミングの利点と応用:
- リファクタリング、デバッグ、テストが簡単
- 全体的なアプリケーション:数学計算、人工知能
- ローカルアプリケーション:どこでも開花しました
コンセプト
-関数を使用したプログラミングでは、関数自体の概念に戻る必要があります。
数学では、関数は2つのセット間の対応です。入力値セットの各要素は、唯一の出力値セットの要素に対応できます。たとえば、実数xとその二乗x 2の関係は関数であり、この関数の入力値として3を使用すると、結果の出力値は9になります。-ウィキペディア
注:
- 概念と式の形式を区別するには
関数はマッピング関係を強調し、特定の実装にはさまざまな方法がありますが、関数のアプリケーション側では、特定の実装を無視できます。 - 関数にはさまざまな式を使用できます。
二乗関係の式は、y = x 2、多項式展開、テイラー展開などです。
特徴
副作用なし(純粋な関数):プログラムの状態を変更しません
- 透明な引用
一等公民
- パラメータとして渡す
- 結果として戻る
- データ構造に保存
高次関数-複雑なパラメーターの処理を簡略化できます
- 少なくとも1つの関数をパラメーターとして受け取る
- 結果は関数です
アプリケーション
- クロージャー:外部スコープ変数
を参照する特別な関数jsのクロージャーの例
<script>
var global = "outer"
function outer(){
var global = "inner";
var a = 5
function inner(){
console.log(global)
console.log(a++)
}
return inner;
}
var r = outer();
r()
</script>
- カリー化:関数をモジュール化し、コードを再利用して、マルチパラメーター関数を1つのパラメーターのみを受け入れる一連のプロセスに変換する手法