コードブロックの実装

問題:あなたのJavaScriptアプリケーションのコードブロックを実装するには、あなたのコードを最適化する。理論を実装するコードのブロックは、一見したところでは、存在しない問題を解決するようなプログラミング技法です。一部では、コードブロックは何もないと言うかもしれないファンシーバックより。 JavaScriptのコードブロックのコールバックに似ている似ていません。しかし、Rubyのような言語では、コードブロックは、プログラミング言語の一部であり、簡単なコードを確認します。するたびに、またはreturn関数がその情報を関連付ける、複数の作品にしたい、呼び出し元のリストを反復処理するコードブロックを使用します。ソリューションみましょう初簡単な例を見て:乗シリーズを作成するいくつかのコードです。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ codeblocks.html関数GenerateSquaredSeries(lastValue)(ヴァール配列=新しいArray();(ヴァールc1 = 0; c1"lastValue;のc1 + +)( array.push(c1 * C1)の;)を返す配列;)
  

には、広場が一連の数字を生成するには、ループが作成されている目的の最高の値をゼロからカウントされます。各反復c1の場合、値c1 * c1(広場)には、配列にプッシュされます。 1回ループ完了すると、配列が返されます。この例ではループの問題:ループ、およびループの初期化は、一般的なインフラストラクチャコードを示します。太字のコードは、アプリケーション固有のコードでは、ループの繰り返しごとに呼び出されます。アプリケーション固有のコードの間に挟まれているループのコードです。挟まれたコードを抽象化は、次のようにコールバックが必要です。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ codeblocks.html関数GenerateSeries(lastValue、 コールバック)(ヴァール配列=新しいArray();(ヴァールc1 = 0; c1"lastValue;のc1 + +)( コールバック(配列は、c1);)を返す配列;)

変更GenerateSeries関数は、コールバック関数を繰り返しごとに呼ばれる追加のパラメータを持っています。コールバック関数、およびビジネスロジックの実施の目的を果たすため、インスタンス化された配列とコールバック番号を渡します。コールバックして、渡されたパラメータを処理することができます(配列およびc1)しかし、それを喜ばす。この次の例です。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ codeblocks.html関数ExampleSeriesSquare()(ヴァール配列= GenerateSeries(10、関数(配列、値)( array.push(c1 * C1)の;));)

ExampleSeriesSquare関数は、単一の関数呼び出しは、呼び出しGenerateSeries。無名関数が処理するGenerateSeriesに渡されている配列の値で渡されます。匿名関数の実装ではコードGenerateSquaredSeries、これはかなり明らかにされているアプリケーションロジックのコードと同じです。この例では無名関数のコードブロックです。前述したように、コードブロックは、コールバックのようです。どのようなコールバックのコードブロックと違うのは、コードブロックの自然の中で一般的なことですし、コードの2つの部分の分離を表しています。コールバックのシナリオからのコードブロックのシナリオでは、GenerateSeriesとExampleSeriesSquareにコードを変換するように書き換える次のとおりです:

関数GenerateSeriesMod(コールバック)((ヴァールc1 = 0; c1"lastValue; c1 + +)(コールバック(C1)の;))関数ExampleSeriesSquareMod()(ヴァール配列=新しいアレイlastValue(); GenerateSeries(10、関数(値)(array.push(c1 * C1)の;));)

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ codeblocks.html関数CustomList()(this.array =新しいArray();)CustomList.prototype.iterate =関数(コールバック)this.arrayで(アイテム)(コールバック(に(項目);))CustomList.prototype.addItems =関数(ヴァールc1 = 0; c1"のarguments.length; c1 + +)(this.array.push(引数[c1]);))()(の

この例では、CustomListクラスが定義されています。カスタムリストの2つの関数:して反復処理し、addItems。 addItems関数は、リストに項目を追加するために使用されている処理関数は、各ループ内の要素の反復処理し、コールバックを呼び出します。 callbackパラメータは、コードブロックを表します。 CustomListの使用例は次のとおりです。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ class_list_iterate codeblocks.html:=新しいCustomList(); list.addItems("hello"を、"世界");(関数(アイテム)(情報をもっと見るlist.iterate()(ヴァールリスト機能( "class_list_iterate"、アイテム);));)

CustomListインスタンス化され、変数のリストに割り当てられます。アイテムリストaddItems関数を使用して追加されます。注意してaddItems複数されてパラメータ知っている。多くのプログラミング言語で、あなたは、addItemメソッドを呼び出してリストにできるだけ頻繁にあるアイテムがアイテムを追加する必要があります。 addItemsメソッドは、あなたが、多くのパラメータとしてのように指定することで、異なっていると、これらの各パラメータのリストに追加する1つのアイテムを表します。リストには、コードブロックを反復処理するために、定義され、コードブロックの実装では、データを処理することができますしかし、それは発信者を喜ばす。この例では、アイテムの出力は、infoメソッドを使用しています。コードブロックも生成して戻り値をプロセスを使用することができます。のは、関数の株価の終値の統計情報を見つけるために使用さを作成する例を考えてみましょう。次のコードの実装のコードブロックのアプローチ:従来の非使用している

関数StockTracerTraditional(ティッカー)(場合(ティッカー=="YHOO")(ヴァールOBJの=新しいObject(); ="ヤフー";ヒイラギ= 23; this.change = -1;戻りOBJのthis.company;)を返すがnull;)関数CallerStockTracer()(ヴァールOBJの= StockTracerTraditional("YHOO");場合(OBJの!=がnull)(情報("return_valueを"、"会社="+ obj.company +"="近い+ obj.close + ➥"に変更="+ obj.change);))

StockTracerTraditional関数は、単一のパラメータがあります:ティッカーを見つけることができます。場合は、ティッカーが見つかった場合、オブジェクトをインスタンス化され、適切なプロパティに割り当てられます。いったんプロパティを割り当てられているオブジェクトのインスタンスが返されます。 CallerStockTracer関数の実装StockTracerTraditional適切なティッカーをして呼び出し、返されたオブジェクトのインスタンスobjに割り当てられている。 objがかどうかがnullの場合その決定を確認が行われます。処理することができます場合は、銘柄発見されている場合、objがnullのオブジェクトされません。そうでなければ、何もせずに関数を返します。このコード例は、コードブロックを使用して簡略化することができます。 StockTracerTraditionalの次の書き換えの実装コードのブロックの結果を使用します。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ codeblocks.html関数StockTracker(ティッカー、コールバック)(場合(ティッカー=="YHOO")(コールバック("ヤフー"、23、-1);))

StockTrader関数と同じ決断をブロックティッカーを見つけるように書き換えて使用されます。どのような新しいされているときに、ティッカーが呼び出されるコールバックを使用しています。場合は、YHOOティッカーが見つかると何が起こるかを考えます:コールバックの3つのパラメータで呼び出されます。場合は、コードブロックを使用されていない場合、オブジェクトをインスタンス化する必要があるだろうと、呼び出し元に返されます。これは、コードブロックを使用する場合、必要がないことを確認する場合、データは、次の呼び出し元のコードで示すが返されます。

 ソース: /サイト/ルート/ ajaxrecipes / javascriptに/ codeblocks.html return_valueを:関数()(StockTracker("YHOO"の関数(会社を閉じ、変更)(/ /データ情報をもっと見ると("return_valueを"何か、"会社=" +会社+ ="閉じる"+閉じる+"="変更+➥変更);));)

ティッカーとYHOO匿名関数になりますを見つけることはStockTrackerを呼び出すと呼ばれる。匿名関数の実装では、データが正常に返されているが実行されるコードになります。これは、匿名関数が呼び出されるコードブロックでは、発信者が決定構造を実装する場合のみ、ティッカーが存在する必要はありません。コードブロックを終了するための手段であり、その作成の決定をブロックまたは使用しないでください意味するものではありませんアプリケーションのロジックをループします。コードブロックを簡略化してから別のコードを分離amechanismを提供します。するときは、次のを覚えて、コードブロックを使用する:

ただし、コードブロックのロジックの分離を促進する•コードのブロックをコールバックのように、コードが互いに独立した作品を作っている。

コードブロックの利点•それら1つの結果を処理することができますが、複数の結果、または結果はありませんでした。万が一、その結果仕事を呼び出すコードを判別する必要はありません。

•JavaScriptの動的な性質を使用して、機能セットとして、複数のパラメータを処理することができます。

•コードのブロックのreturnステートメントに代わるものとして、より複雑なデータを送信するために使用することができます。レシピ2-17のように、コードブロックは、呼び出し元に戻り値の型を使用せずにデータを返すのに最適な方法です。

記事は、ソニアLandeを提出


免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。
重要: この記事は、""コードブロックの実装の自動ソフトウェアによって翻訳された。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。


Online: 284 users browsing the articles directory