Arguments variables et par défaut en Javascript, Actionscript et PHP

Qui développe sait que l'une des caractéristiques des fonctions ( function () ) est d'avoir ou non des arguments d'entrée. Il peut arriver, parfois, vous devez écrire une fonction qui, basé sur les paramètres d'entrée, se comporte différemment (en programmation OO ce comportement sont considérés comme le polymorphisme). Paramètres variables (varargs), déjà mis en place au moment du présent par défaut dans C et de la déclaration classique de la main :

1
int main (int argc, char * argv []);

Mais à ne pas confondre avec le réglage par défaut d'un paramètre, désormais entièrement pris en charge dans ActionScript 3.0.

Les arguments par défaut

Par exemple, en PHP, vous pouvez définir une fonction comme ceci:

1
2
3
$a , $b = 5 ) { function bar ($ a, $ b = 5) {
/ / Todosomethink
}

le paramètre $b est facultatif, c'est à dire si elle n'est pas passé lors de l'appel à la fonction prendra la valeur par défaut de 5.

Comme prévu dans ActionScript 3.0 supporte maintenant pleinement ce système:

ActionScript 3.0 introduit la possibilité de déclarer les valeurs des paramètres par défaut pour une fonction. Si un appel à une fonction avec des valeurs de paramètres par défaut omet un paramètre avec un défaut, il utilise la valeur spécifiée pour ce paramètre dans la définition de fonction. Tous les paramètres avec les valeurs par défaut doit être positionnée à la fin du paramètre. Les valeurs affectées comme valeurs par défaut doivent être constantes à la compilation. L'existence d'une valeur par défaut pour un paramètre rend effectivement ce paramètre un paramètre optionnel, tandis qu'un paramètre sans valeur par défaut est considéré comme un paramètre obligatoire.

C'est la même chose pour PHP: Un paramètre avec une valeur par défaut pour le vent en option.

Dans ActionScript 3.0, similaire à l'exemple discuté ci-dessus en PHP, vous pouvez mémoriser les paramètres d'entrée de cette manière:

1
2
3
a : int , b : int = 5 ) : void { barre de fonctions (a: int , b: int = 5): void {
/ / Todosomethink
}

Même dans ce cas le second paramètre b devient automatiquement option.

En JavaScript, malheureusement, cette caractéristique n'est pas - encore - pris en charge. Bien qu'il existe quelques "alambiqué" techniques (voir, par exemple, arguments par défaut dans les fonctions JavaScript ) afin de simuler ou de contourner l'obstacle, l'utilisation de cette technique en JavaScript est très limitée.

Paramètres variables

Cette technique, contrairement à son prédécesseur, permet d'examiner le contenu et la présence des paramètres d'entrée d'une fonction. Il est évident que cette méthode peut aussi être utilisé pour définir les paramètres manquants. e func_get_arg() . En PHP, par exemple, nous avons trois fonctions simples qui travaillent sur ​​les paramètres d'entrée: func_num_args() , func_num_args() et func_get_arg() . Ces fonctions vous permettent de retourner respectivement le nombre d'arguments, retourne un tableau avec tous les éléments d'entrée, de récupérer un élément spécifique de l'entrée. Par exemple:

1
2
3
function bar () {
. func_num_args ( ) ; echo 'Nombre d'arguments ='. func_num_args ();
}

Retourne le nombre d'arguments passés à la fonction pluto . Dans l'exemple ci-dessous, cependant, est considérée comme une fonction de son comportement peut varier selon le nombre (et aussi le type - polimofica) de ses paramètres. Dans ce cas, si nous appelons pluto() avec deux ou plusieurs paramètres est affiché autrement pas.

1
2
3
4
function bar () {
func_num_args ( ) > 2 ) if ( func_num_args ()> 2)
. func_get_arg ( 1 ) ; // essendo in base 0 echo 'Le second paramètre est'. func_get_arg (1), / / étant 0-base
}

Cela vous permet également de "simuler" un ensemble de paramètres par défaut, mais depuis PHP supporte nativement et encore plus pratique que les énoncés ci-dessus. Mais voici un exemple pour clarifier:

1
2
3
4
5
function bar () {
! isset ( func_get_arg ( 1 ) ) ) { if ( isset ( func_get_arg (1))) {
/ / Le second paramètre n'a pas été adopté
}
}

ou:

1
2
3
4
5
function bar () {
func_num_args ( ) < 2 ) { if ( func_num_args () <2) {
/ / Le second paramètre n'a pas été adopté
}
}

Dans ActionScript et JavaScript ont une situation comme celle-ci:

1
2
3
4
5
6
7
function bar () {
'Numero argomenti passati = ' + arguments . length ) ; trace ("Nombre d'arguments = '+ arguments de longueur.);
/ / Imprimer tous les sujets
var i : uint = 0 ; i < arguments . length ; i ++ ) { for (var i: uint = 0; i < arguments de longueur; i + +). {
arguments [ i ] ) ; trace ( arguments [i]);
}
}

Javascript:

1
2
3
4
5
6
7
8
9
function bar () {
'Numero argomenti passati = ' + arguments. length ) ; alert ('Nombre d'arguments =' + arguments de longueur.);
/ / Imprimer tous les sujets
'' ; var o ='';
var i = 0 ; i < arguments. length ; i ++ ) { for (var i = 0;. i <arguments de longueur; i + +) {
i ] + ' \n ' ; ou + = arguments [i] + "\ n";
}
o ) ; alert (o);
}

Depuis l'ECMA, ActionScript et JavaScript ressemblent beaucoup, utilisant à la fois un objet arguments qui fournit alors des informations diverses.

2 commentaires à "des sujets et des variables par défaut en Javascript, Actionscript et PHP"

  1. 11 juin 2008 les variables Sujets dans ActionScript 3.0 | Undolog.com :

    Message sujets [...] et variables par défaut en Javascript, Actionscript et PHP j'ai été exposé en utilisant les techniques de passage de paramètres et de variables par défaut. Ajouter, maintenant, [...]

  2. 5 janvier 2009 WordPress: wp_parse_args () | Undolog.com :

    [...] Dans les fonctions de WordPress et est utile quand une fonction prend en charge paramteri multiples. Comme indiqué dans Sujets et variables par défaut en Javascript, Actionscript et PHP, il n'est pas nécessaire de passer des paramètres dans le mode [...]

Laisser un commentaire

XHTML TAG PERMIS: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CODE D'INSERTION:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL