Ruby - 链接方法和返回数组

标签 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 方法中的代码移到另一个方法中,它就可以工作,所以问题实际上只是处理链接和返回。

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

谢谢!

最佳答案

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

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

关于Ruby - 链接方法和返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3411295/

相关文章:

ruby-on-rails - 通过连接表无法工作的多对多关系的 Rails ActiveAdmin 表单

ruby - 如何在一种方法中产生 2 个 block

ruby - 使用嵌套散列和散列作为默认值未按预期工作

C# 嵌套 Try Catch 语句或方法?

methods - 即使在这种情况下,每个方法也只有一个 return 语句吗?

java - 如何在类中输入值时不覆盖值?

javascript - 如何在面向对象的Javascript中进行方法链接?

Ruby Paperclip Amazon S3 Bucket Connection refused - connect(2) for "s3-website-us-west-1"port 443

Golang 接口(interface)方法链接

php - 检查调用是否是方法链接