J'ai quelques méthodes pour une classe qui renvoie des tableaux comme ["1", "3", "2", "6", "2"]
. C'est ok que ce sont des tableaux de chaînes, pas numériques. J'ai une autre méthode qui prend un tableau, et le transforme en une seule chaîne comme celle-ci 1 3 2 6 2
.Méthodes de chaînage Ruby et retour de tableau
class Turn
def initialize
@rolls = 1
@dice = []
end
def roll
@roll = []
x = 5 - @dice.length
x.times do |i|
@roll[i] = rand(6) + 1
end
@roll # ["1", "3", "2", "6", "2"]
end
def show
@dice # ["1", "3", "6"]
end
def line(something)
temp = ""
something.each do |x|
temp << x + " "
end
puts temp # "1 3 6 " or "1 3 2 6 2 "
end
end
Ensuite, je veux être en mesure de méthodes de chaîner pour que je puisse faire
first = Turn.new
first.roll.line
first.show.line
Cependant, je ne sais vraiment pas comment faire, et je n'ai pas pu trouver comment en ligne. J'ai vu self
être retourné, mais je ne peux pas vraiment comprendre ce qu'il fait. Le code de la méthode line
fonctionne si je le déplace dans une autre méthode, donc le problème concerne uniquement le chaînage et le retour.
Si quelqu'un pouvait non seulement aider avec le code, mais avec la façon dont fonctionne le chaînage en ce qui concerne le retour des valeurs et le retour de soi, ce serait génial.
Merci!
Votre deuxième partie est parfaite! Merci d'avoir expliqué la première partie aussi. Alors que je lis de gauche à droite, chaque méthode renvoie une valeur, qui est agi par la méthode suivante? –
oui, chaque méthode retournera le dernier argument. un excellent moyen de voir ceci est d'utiliser la console irb. –
@Jed Faites-vous référence au fait que le dernier argument d'une méthode est retourné, vous n'avez donc pas besoin d'avoir explicitement 'return @ dice'? Parce que je le comprends déjà. Je me demande quand vous avez plusieurs méthodes enchaînées, comment elles transmettent les valeurs retournées. –