Existe-t-il une possibilité de renvoyer plusieurs valeurs de la méthode? Quelque chose comme ça:
def someMethod()
return ["a", 10, SomeObject.new]
end
[a, b, c] = someMethod
def sumdiff(x, y)
return x+y, x-y
end
#=> nil
sumdiff(3, 4)
#=> [7, -1]
a = sumdiff(3,4)
#=> [7, -1]
a
#=> [7, -1]
a,b=sumdiff(3,4)
#=> [7, -1]
a
#=> 7
b
#=> -1
a,b,c=sumdiff(3,4)
#=> [7, -1]
a
#=> 7
b
#=> -1
c
#=> nil
>>
invite d'irb disparaîtra.def foo_and_bar; ['foo', 'bar']; end
Ruby a une forme limitée de liaison de déstructuration:
Il a également une forme limitée de liaison structurante:
Vous pouvez combiner ces deux formes comme ceci:
Il y a plusieurs autres choses que vous pouvez faire avec la liaison de déstructuration / structuration. Je n'ai pas montré en utilisant l'opérateur splat (
*
) sur le côté droit. Je n'ai pas montré de nidification (en utilisant des paranthèses). Je n'ai pas montré que vous pouvez utiliser la liaison de déstructuration dans la liste des paramètres d'un bloc ou d'une méthode.Voici juste un apéritif:
la source
Bien que renvoyer plusieurs valeurs soit souvent utile, je trouve généralement que c'est un pointeur vers une nouvelle exigence d'objet.
Autrement dit, je trouve généralement que ces valeurs de retour sont étroitement liées entre elles dans le sens / le contexte et sont transmises en tant que telles. Donc, dans ces cas, je créerais un nouvel objet pour les lier ensemble. C'est une odeur de code particulière que j'ai appris à reconnaître.
la source
chunk
n'existeraient pas. Excellent principe cependant. Code odeur en effet. Rock On.Vous pouvez également y parvenir en renvoyant un tableau, comme
qui semble fonctionnellement équivalent à
la source