2

我有一些用于返回数组的类的方法,例如["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可以工作,所以问题实际上只是处理链接和返回。

如果有人不仅可以帮助编写代码,还可以帮助了解链接在返回值方面的工作方式以及返回自我的工作方式,那就太棒了。

谢谢!

4

1 回答 1

2

由于您的#rolland#show方法返回一个数组,因此您需要定义一个方法Array#line才能实际执行first.roll.line.

顺便说一句,Array#join就像你的#line 方法一样,它已经将数组元素连接到一个字符串中,所以你也可以使用first.roll.join(' ')和摆脱你的#line 方法。

于 2010-08-05T02:24:00.897 回答