ホームページ ウェブフロントエンド jsチュートリアル JavaScriptの代表的な高階関数応用入門2_JavaScriptスキル

JavaScriptの代表的な高階関数応用入門2_JavaScriptスキル

May 16, 2016 pm 05:44 PM
高次関数

はじめに
前回の記事「JavaScript の代表的な高階関数」では、主にいくつかの代表的な関数関数を実装しました。この記事では最後に、なぜその実装が F# などの関数型言語と「異なる」のかという疑問も提起されています。今日はより「機能的な」実装を試してみましょう。

別の実装
同様に、以前に実装された関数にいくつかの変更を加え、for ループを削除してみます。削除するにはどうすればよいですか?ここで最初に集合の帰納的定義を紹介します:

集合は空の集合、または数値と集合からなる数値のペアのいずれかです。この定義から、各集合とみなすことができることがわかります。数値とペアのセットとして。たとえば、{1,2,4,5} は、数値 1 と集合 {2,4,5} で構成されるペアと見なされ、(1, {2,4,5}) と記述されます。再帰的に、{2,4,5} は (2, {4,5}) として表示されます。最後に (5, Ø) です。この理解に基づいて、分解中にすべてのデータ項目を参照し、最終条件が空集合であるため、再帰的手法を使用してループを排除できます。フィルター関数の別の実装を見てみましょう。元の関数名には、前の関数と区別するために f という接頭辞が付いています。
コード コードは次のとおりです:
function ffilter(arr,callback){
var i=arguments[2] || 0,
out = argument[3] ] || [];
if (!arr[i]) 戻り値 [3];
out.push(arr[i]); 🎜>return argument.callee(arr,callback , i,out);
}


テスト:


コードをコピー コードは次のとおりです。 var arr = [1,2,3,4,5,6,7,8,9,10]; var Even = function(item){
if( typeof item !== "number") return
return !(item & 1)
}; arr,even));


結果:
[2, 4, 6, 8, 10] ループを削除すると、数学の帰納的定義に近くなり、より自然に見えます。同様に、ffold 関数をもう一度見てみましょう:



コードをコピーします
コードは次のとおりです: var arr = [1,2,3,4,5,6,7,8,9,10]; var plus = function(a,b){ return a b;
console .log(ffold(arr,plus,3));


結果:
58
他の関数にも同じ方法を使用します。これはより関数的に感じられますが、数学的な定義に近づけることはできるでしょうか?次回もう一度試してください。
==========2013.1.8 Update==================
上記の通り、書き方がより近づけられるかどうか数学的定義を理解するには、リンク リストを使用してみましょう。まず定義を与えます:




コードをコピー

コードは次のとおりです: var node = function () { this.data = 0; this.tail = null
別のリンクされたリストを初期化します。 🎜>


コードをコピーします

コードは次のとおりです:
var n1 = 新しいノード(),n2 = 新しいノード( ),n3 = 新しいノード(),n4 = 新しいノード(),n5 = 新しいノード();
n1.data=1,n1.tail=n2;

コードをコピー


コードは次のとおりです:


function lfold(head,callback ,b){
if(!head) return b;
else return callback(head.data,arguments.callee(head.tail,callback,b)); 🎜>}
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPで関数型プログラミングを行う方法 PHPで関数型プログラミングを行う方法 Jun 06, 2023 am 08:21 AM

PHP は広く使用されているサーバーサイド言語であり、多くの Web 開発者が PHP の使用を好む理由の 1 つは、その豊富な関数ライブラリとシンプルで使いやすい関数構文です。関数型プログラミングは、データと動作を適切にカプセル化し、コードをよりモジュール化し、保守とテストを容易にするプログラミング パラダイムです。この記事では、PHPを使った関数型プログラミングの方法を紹介します。関数型プログラミングの基本 関数型プログラミングの中心的な考え方は、関数を第一級市民として扱うことです。関数自体は、変数のように渡したり、返したり、構成したりできます。

Python で高階関数を作成するにはどうすればよいですか? Python で高階関数を作成するにはどうすればよいですか? Sep 05, 2023 pm 07:29 PM

Python では、別の関数を引数として受け取る関数、または関数を出力として返す関数を高階関数と呼びます。その機能を見てみましょう - 関数は変数に格納できます。この関数はパラメータとして別の関数に渡すことができます。高階関数はリスト、ハッシュ テーブルなどの形式で保存できます。関数は関数から返すことができます。いくつかの例を見てみましょう - オブジェクトとしての関数 Example の中国語訳は次のとおりです。 Example この例では、これらの関数はオブジェクトとして扱われます。ここでは、関数demo()が変数に割り当てられています - #Creatingafunctiondefdemo(mystr):returnmystr.swapcase()#swappingthecase

Python の高階関数とは何ですか? Python の高階関数とは何ですか? Nov 10, 2023 pm 04:42 PM

高階関数には、map()、filter()、reduce()、lambda 関数、partial() などが含まれます。詳細な紹介: 1. map(): この組み込み関数は、関数と 1 つ以上の反復可能オブジェクトを入力として受け取り、入力関数を反復可能オブジェクトの各要素に適用する反復子を返します。 2. filter():この組み込み関数は、関数と反復可能なオブジェクトを入力として受け取り、入力関数が True などを返す要素を生成する反復子を返します。

PHP アロー関数: 高階関数へのネストされた呼び出しを処理する方法 PHP アロー関数: 高階関数へのネストされた呼び出しを処理する方法 Sep 13, 2023 am 08:27 AM

PHP アロー関数: 高階関数のネストされた呼び出しを処理する方法、具体的なコード例が必要 はじめに: PHP7.4 バージョンでは、アロー関数 (arrowfunction) の概念が導入されました。高階関数へのネストされた呼び出し。この記事では、アロー関数の基本的な使用法を紹介し、具体的なコード例を通じて高階関数の入れ子になった呼び出しを処理する方法を示します。 1. アロー関数とは何ですか?アロー関数は、PHP7.4バージョンで導入された新機能です。

Python の高階関数 Python の高階関数 Sep 13, 2023 pm 06:53 PM

Python の高階関数の世界の紹介 Python プログラミング スキルを向上させ、より表現力豊かで効率的なコードを生成したい場合は、ここが正しい場所です。 Python の関数は、単なる特殊なコード ブロックではありません。また、移動、転送、さらには動的に生成できる強力なものでもあります。高次関数は、他の関数を処理することでこの汎用性を高めます。この記事では、高階関数の原理について詳しく説明します。最高級のオブジェクトとしてのプロセスの基本を探り、高階関数の実際の例を詳しく調べ、明確で美しいコードを実現するラムダ関数の力を奨励します。関数型プログラミング モデルと、Python で使用する場合のその利点についても説明します。この記事を読むと、高階関数をしっかりと理解し、

Golangにおける高階関数の応用シナリオの分析 Golangにおける高階関数の応用シナリオの分析 May 17, 2023 pm 05:40 PM

Golang 言語の人気と発展に伴い、関数型プログラミングのアイデアを使用しようとする開発者がますます増えています。 Golang の高階関数は関数型プログラミングに大きな利便性をもたらし、実際の開発で広く使用されています。では、Golang における高階関数の応用シナリオにはどのようなものがあるのでしょうか?次にこれを分析していきます。関数のパラメータと戻り値の処理 Golang では、関数を他の関数のパラメータや戻り値として使用できます。これは、関数をパラメータとして別の関数に渡すことができることを意味します。

PHPで関数型プログラミングを行う方法 PHPで関数型プログラミングを行う方法 Jun 06, 2023 am 08:21 AM

PHP は広く使用されているサーバーサイド言語であり、多くの Web 開発者が PHP の使用を好む理由の 1 つは、その豊富な関数ライブラリとシンプルで使いやすい関数構文です。関数型プログラミングは、データと動作を適切にカプセル化し、コードをよりモジュール化し、保守とテストを容易にするプログラミング パラダイムです。この記事では、PHPを使った関数型プログラミングの方法を紹介します。関数型プログラミングの基本 関数型プログラミングの中心的な考え方は、関数を第一級市民として扱うことです。関数自体は、変数のように渡したり、返したり、構成したりできます。

Golang の関数型の高次関数を理解するにはどうすればよいですか? Golang の関数型の高次関数を理解するにはどうすればよいですか? Apr 20, 2024 am 11:54 AM

Golang の高階関数は関数を受け取り、関数を返します。これらは、関数をパラメーターとして受け取る、他の関数を処理する、または動的プログラムを実行するという 2 つのカテゴリに分類されます。関数を戻り値として返す: 保存して後で実行できる関数を作成して返します。

See all articles