Mettre en œuvre les blocs de code

Problème: Vous souhaitez mettre en œuvre des blocs de code JavaScript dans vos applications, afin d'optimiser votre code. Théorie d'exécution des blocs de code est une technique de programmation qui à première vue, semble résoudre un problème qui n'existe pas. Certains pourraient même dire qu'un bloc de code n'est rien de plus qu'un rappel de fantaisie. Les blocs de code en JavaScript ne similitudes supporter de rappels. Mais dans des langages comme Ruby, les blocs de code font partie du langage de programmation et de faire pour un code plus simple. Vous utilisez les blocs de code chaque fois que vous le feriez parcourir une liste ou d'une fonction de retour si vous souhaitez associer plusieurs morceaux d'information avec un appelant. Solution Soit le premier regarder un exemple simple: un code pour créer une série carré.

 Source: / website / ROOT / ajaxrecipes / javascript / GenerateSquaredSeries fonction codeblocks.html (LastValue) (var array = new Array (); for (var c1 = 0; C1 <LastValue; C1 + +) ( array.push (C1 * C1);Array) return;)
  

Pour générer une série de nombres qui sont le carré, une boucle est créé, qui compte à partir de zéro jusqu'à la valeur la plus élevée souhaitée. Pour chaque itération, la valeur C1 * C1 (carré de C1) est poussé sur un tableau. Une fois que la boucle est terminée, le tableau est retourné. L'exemple illustre un problème de boucle: la boucle, et l'initialisation de la boucle, est le code d'infrastructure générique. Le code en gras correspond à l'application du code spécifique, appelée à chaque itération de la boucle. L'application du code spécifique est prise en sandwich entre le code de la boucle. Abstraire le code en sandwich nécessite un rappel, qui ressemble à la suivante.

 Source: / website / ROOT / ajaxrecipes / javascript / GenerateSeries fonction codeblocks.html (LastValue, rappel) (Var array = new Array (); for (var c1 = 0; C1 <LastValue; C1 + +) ( callback (tableau, C1);Array) return;)

La fonction GenerateSeries modifié a un paramètre supplémentaire, qui est la fonction de rappel appelée pour chaque itération. La fonction de rappel a pour but de mener à bien la logique métier, et passe ainsi du tableau instancié et le numéro à la fonction de rappel. Le rappel peut ensuite traiter les paramètres passés (array et C1), cependant il lui plaît. Un exemple de ce suit.

 Source: / website / ROOT / ajaxrecipes / javascript / fonction codeblocks.html ExampleSeriesSquare (array) (var = GenerateSeries (10, function (array, value) ( array.push (C1 * C1);));)

La fonction ExampleSeriesSquare a un appel de fonction unique qui GenerateSeries appels. Une fonction anonyme est passé à GenerateSeries qui traitera le passé, dans le tableau et la valeur. Le code de l'exécution de la fonction anonyme est identique au code de l'application logique dans GenerateSquaredSeries, ce qui est assez évidente. L'exemple de fonction anonyme est un bloc de code. Comme mentionné précédemment, un bloc de code est comme un rappel. Ce qui fait un rappel différent d'un bloc de code est qu'un bloc de code est de nature générale et représente une séparation des deux morceaux de code. Pour convertir le code à partir d'un scénario de rappel dans un scénario code en bloc, GenerateSeries et ExampleSeriesSquare sont réécrits comme suit:

fonction GenerateSeriesMod (LastValue, callback) (for (var c1 = 0; C1 <LastValue; C1 + +) (callback (c1);)) function ExampleSeriesSquareMod () (var array = new Array (); GenerateSeries (10, fonction ( value) (array.push (C1 * C1);));)

 Source: / website / ROOT / ajaxrecipes / javascript / fonction codeblocks.html CustomList () (this.array = new Array ();) CustomList.prototype.iterate = function (callback) (for (point dans this.array) (rappel (point );)) CustomList.prototype.addItems = function () (for (var c1 = 0; C1 <arguments.length; C1 + +) (this.array.push (arguments [c1]);))

Dans l'exemple, une classe CustomList est défini. La liste personnalisée a deux fonctions: une itération et addItems. La fonction addItems est utilisée pour ajouter un élément à une liste, et la fonction iterate parcourt chacun des éléments dans la boucle et demande un rappel. Le paramètre de rappel représente un bloc de code. Un exemple d'utilisation CustomList est la suivante.

 Source: / website / ROOT / ajaxrecipes / javascript / codeblocks.html class_list_iterate: function () (var list = CustomList new (); list.addItems ( "bonjour", "world"); list.iterate (function (item) (info ( "class_list_iterate", item);));),

CustomList est instancié et affecté à la liste de variables. Un élément est ajouté à la liste en utilisant la fonction addItems. Notez que addItems est multiple-parameter-Aware. Souvent, dans les langages de programmation, vous devez appeler la méthode AddItem pour ajouter un élément à une liste aussi souvent qu'il ya des éléments. La méthode addItems est différent en ce que vous pouvez spécifier autant de paramètres que vous voulez, et chacun de ces paramètres représente un seul élément à ajouter à la liste. Pour parcourir la liste, un bloc de code est définie, et la mise en œuvre du bloc de code, les données peuvent être traitées mais il plaît à l'appelant. Dans cet exemple, les articles sont de sortie en utilisant la méthode d'info. Les blocs de code peut également être utilisé pour produire et traiter les valeurs de retour. Prenons un exemple qui crée une fonction permettant de trouver les statistiques de clôture d'un téléscripteur. Voici la mise en œuvre du code en utilisant une traditionnelle de non-approche bloc de code:

fonction StockTracerTraditional (ticker) (if (ticker == "YHOO") (var obj = new Object (); this.company = "Yahoo"; this.Close = 23; this.change = -1; return obj;) return null;) function CallerStockTracer () (var obj = StockTracerTraditional ( "YHOO"); if (obj! = null) (info ( "return_value", "Company =" + obj.company + "close =" + + obj.close ➥ «changement =" + obj.change);))

La fonction StockTracerTraditional a un seul paramètre: le symbole à trouver. Si le symbole est trouvé, un objet est instancié et les propriétés appropriées sont assignés. Une fois que les propriétés ont été affectées, l'objet instancié est retourné. L'implémentation de la fonction CallerStockTracer appels StockTracerTraditional avec le symbole approprié, et l'instance retournée objet est assigné à obj. Alors qu'une décision soit prise pour vérifier si obj est nulle ou non. Si le boursier a été trouvée, alors obj ne sera pas nulle et l'objet ne peut être traitée. Sinon, la fonction retourne sans rien faire. L'exemple de code peut être simplifiée en utilisant des blocs de code. La mise en œuvre suivant réécrit de StockTracerTraditional utilise les résultats des blocs de code.

 Source: / website / ROOT / ajaxrecipes / javascript / fonction codeblocks.html StockTracker (ticker, callback) (if (ticker == "YHOO") (callback ( "Yahoo", 23, -1);))

La fonction StockTrader est réécrite, et le bloc de la même décision de trouver le symbole est utilisé. Ce qui est nouveau est l'utilisation de la fonction de rappel qui est appelée quand un ticker est trouvé. Pensez à ce qui se passe si le symbole YHOO est trouvé: le rappel est appelée avec trois paramètres. Si un bloc de code n'ont pas été utilisés, alors un objet devrait être instancié et retourné à l'appelant. Parce qu'un bloc de code est utilisé, il n'est pas nécessaire de vérifier si les données sont retournées, comme illustré par le code appelant suite.

 Source: / website / ROOT / ajaxrecipes / javascript / return_value codeblocks.html: function () (StockTracker ( "YHOO", (fonction entreprise, à proximité, change) (/ / Faire quelque chose avec les informations données ( "return_value", "Company =" + société + "close =" + fermer + "changement =" + ➥ changement);));),

Calling StockTracker grâce au téléscripteur de trouver le plus YHOO se traduira par la fonction anonyme appelée. Dans la mise en œuvre de la fonction anonyme serait le code qui est exécuté quand les données ont été retournés avec succès. Avec des blocs de code, l'appelant n'a pas à mettre en œuvre une structure de décision, parce que la fonction anonyme ne sera appelé que si le symbole existe. Blocs de code sont un moyen pour une fin, et ne signifie pas que vous ne devriez jamais utiliser des blocs de décision ou de créer des boucles avec la logique applicative. Les blocs de code de fournir amechanism de simplifier et de découpler le code d'un autre. Lorsque vous utilisez les blocs de code, n'oubliez pas ce qui suit:

• Les blocs de code sont comme des rappels, sauf que les blocs de code promouvoir la séparation de la logique, faisant des morceaux de code indépendantes les unes des autres.

• L'avantage de blocs de code est qu'ils peuvent traiter les résultats uniques, multiples résultats, ou aucun résultat. Le code d'appel n'a pas à déterminer si les résultats travaillé.

• Utilisation de la nature dynamique de JavaScript, une fonction capable de traiter plusieurs paramètres, comme un ensemble.

• Les blocs de code peut être utilisé comme une alternative à l'instruction de retour pour envoyer des données plus complexes. Comme indiqué dans la recette 2-17, blocs de code sont le moyen idéal pour renvoyer des données à l'appelant sans avoir à utiliser un type de retour.

un article présenté par Sonja Lande


Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite.
Important: Cet article «Mettre en œuvre les blocs de code" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.


Online: 268 users browsing the articles directory