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 метода.

Другие вопросы по тегам