如何扩展集合(?)以包含Rails中的第二,第三等功能?

时间:2011-06-21 17:00:47

标签: ruby-on-rails ruby-on-rails-3 class object extend

非常自我解释。

我使用array_name.first获取第一个元素。你如何扩展它以获得第二,第三,随机等?

感谢。

2 个答案:

答案 0 :(得分:2)

在Ruby中,您可以重新打开任何现有的类并添加自己的函数。

在rails中,您已经在activesupport

中定义了这些方法

请参阅github上的来源:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/array/access.rb

答案 1 :(得分:0)

我发现它已经存在,至少在Ruby 1.9.2中。

如果不存在,我会在config / initializers中创建一个名为array_helper.rb(或其他)的文件并添加以下代码:

class Array
  def second
    self[1]
  end
end

为什么呢?因为Ruby中的所有类都是开放的,你可以扩展你想要的任何类。

这里有一些技巧要知道:

在控制台中工作时,如果要测试文件,请务必使用rails console而不是irb。此外,在创建或更新上述文件后执行reload!。最后,必须重新创建所有对象以在reload!之后使用新代码。