Ruby - методы создания цепочек и возвращаемый массив
У меня есть несколько методов для класса, которые возвращают массивы, такие как ["1", "3", "2", "6", "2"]
, Это нормально, что это строковые массивы, а не числа. У меня есть другой метод, который принимает массив и превращает его в одну строку, как это 1 3 2 6 2
,
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
Тогда я хочу иметь возможность связывать методы вместе, чтобы я мог сделать
first = Turn.new
first.roll.line
first.show.line
Тем не менее, я действительно не знаю, как это сделать, и я не смог найти, как в Интернете. я видел self
получить обратно, но я не могу понять, что он делает. Код в line
Метод работает, если я перенесу его в другой метод, так что проблема на самом деле просто в том, чтобы связать и вернуть.
Если бы кто-то мог не только помочь с кодом, но и с тем, как цепочка работает с возвращаемыми значениями и как работает само возвращение, это было бы здорово.
Спасибо!
1 ответ
Так как ваш #roll
а также #show
методы возвращают массив, вам нужно определить метод Array#line
на самом деле быть в состоянии сделать first.roll.line
,
Кстати, уже есть Array#join
который также соединяет элементы массива вместе со строкой, как ваш метод #line, так что вы также можете использовать first.roll.join(' ')
и избавиться от вашего #line метода.