J'ai une bande de fonctions qui prennent une gamme d'objets ou un seul objet conçu pour être traité comme une matrice contenant un objet, et je cherche un moyen plus propre d'accomplir cela. Fondamentalement, je veux savoir comment je pourrais faire le toute aide sera appréciée! Merci. P> p> sauf si code> partie de la fonction suivante plus concis:
3 Réponses :
première chose que vous pouvez faire est d'écrire le Comme vous le voyez, je lui donne un nouveau nom ici, comme ce n'est plus un bar ou des barres, c'est maintenant définitivement une collection. p> Le problème avec cela et votre approche d'origine est que, bien que votre fonction puisse fonctionner sur tout Un truc soigné pour résoudre partiellement ce problème est le suivant: p> Je n'appelerais pas exactement cela lisible, cependant. Cela sent beaucoup comme une mauvaise conception de l'API. Vous devriez probablement mieux prendre plusieurs arguments comme celui-ci: p> et laissez l'appelant décider s'il souhaite passer un seul objet ou un tableau: P> sauf si code> logique dans une seule ligne:
énumérable code>, vous forcerez Vos utilisateurs à vous donner un argument d'un type spécifique, qui brise la dactylographie du canard. P>
foo("XYZ")
ary = ["abc", "def"]
foo(*ary)
Merci, ce deuxième tour était ce que je cherchais. Je sais que ce n'est pas idéal, mais je suis trop simplifié: puisque j'ai de nombreux paramètres consécutifs qui se comportent comme je l'ai décrit, je ne pouvais pas utiliser que la simple écaille de la liste des paramètres.
La solution la plus simple consiste à utiliser la méthode du noyau Array A>: Array(a: 1, b: 2) #=> [[:a, 1], [:b, 2]]
Je suis actuellement en train d'utiliser ce: