只返回数组的元素,不使用方括号Ruby

时间:2014-03-16 23:55:37

标签: ruby arrays instance-methods

我有一个包含三个单词的数组

three_words = ["if", "the", "printed"]

这些单词位于类的实例方法中,我想要它,以便当我在测试中调用实例方法时,它打印出来像:

"if the printed" 

我尝试在最后添加以下方法,但是当我在字符串上调用实例方法时,它仍然会返回[“if”,“the”,“printed”]

three_mcwords.each do |word|
  word + " " 
end

1 个答案:

答案 0 :(得分:2)

您需要查找Array#join方法,three_mcwords.join(" ")。但是你调用了Array#each,它返回了接收器(根据 MRI 实现),你调用了方法#each

您致电three_mcwords.each do |word|..。在这里看到接收器是three_mcwords,其中包含数组 ["if", "the", "printed"]的引用,因此当each块竞争时,你得到数组 ["if", "the", "printed"]返回。

示例:

['foo', 'bar'].each { |str| "hi" + str } # => ["foo", "bar"]
['foo', 'bar'].join(" ") # => "foo bar"

两者都在 MRI 中实施。