Ruby - 链接方法和返回数组

时间:2010-08-05 02:16:37

标签: ruby methods method-chaining

我有一些类的方法可以返回像["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 个答案:

答案 0 :(得分:2)

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

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