我有一些类的方法可以返回像["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
方法中的代码就可以工作,所以问题实际上只是处理链接和返回。
如果某人不仅可以帮助代码,而且关于返回值以及返回自我的方式如何工作,那将是非常棒的。
谢谢!
答案 0 :(得分:2)
由于您的#roll
和#show
方法会返回一个数组,因此您需要定义一个方法Array#line
才能实际执行first.roll.line
。
顺便说一句,已经Array#join
也将数组元素连接到一个字符串,就像你的#line方法一样,所以你也可以使用first.roll.join(' ')
并摆脱你的#line方法。 / p>