Skip to content

Instantly share code, notes, and snippets.

@jjaffeux
Created January 18, 2013 21:55
Show Gist options
  • Save jjaffeux/4568988 to your computer and use it in GitHub Desktop.
Save jjaffeux/4568988 to your computer and use it in GitHub Desktop.
named params rubymtion
def initWithPath(path, andMethod:method)
# Le premier paramètre est nommé par la fin de la première partie
# de la méthode, donc déjà y a pas de def f(a:b).
# Ensuite dans WithPath et andMethod ne sont que des
# noms qui ne sont pas réutilisés dans le code.
# De ce que je peux voir la syntaxe ruby2.0 :
def init_with(path: "/foo", method: :get)
[path, method]
end
# path ca reste le nom de la variable, t’as pas un texte qui
# n'est pas utilisé comme variable pour le décrire plus précisément.
# Après on peut débattre que la variable
# devrait être suffisament explicite en soit mais bon...
@catwell
Copy link

catwell commented Jan 18, 2013

Oui, Twitter est un peu court pour être clair.

Voilà un truc qui marche dans les deux mais ne veut pas dire la même chose :

def foo(bar, spam:eggs)

En 2.0 la fonction s'appelle foo et prend un paramètre simple bar et un paramètre nommé spam dont la valeur par défaut est eggs.

En RM la fonction s'appelle foo:spam et prend deux paramètres bar et eggs. Et cette syntaxe est perturbante, donc j'aurais trouvé plus logique d'utiliser ça :

def foo:spam(bar, eggs)

ou avec ton exemple :

def initWithPath:andMethod(path, method)

Wala ;)

@jjaffeux
Copy link
Author

Ok compris.

L'avantage de ta solution c'est qu'on voit bien la "signature" de la méthode. Effectivement, à l'heure actuelle c'est parfois source d'erreurs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment