6

在 Ruby 中,我看到一个方法的定义是这样的:

def [](param)
   # do stuff
end

这个方法声明是什么意思?它是如何工作的?什么时候使用它?以及如何用实例对象调用这种方法?

4

3 回答 3

8

这是方法的名称,[]. 您可能已经知道Array#[]Hash#[]。在你的类中,你也可以定义这样的方法。它会做什么——这取决于你。

class Foo
  def [](param)
    # body
  end
end

f = Foo.new
f[:some_value]
于 2013-09-01T20:35:20.427 回答
2

这意味着该方法被命名为“ []”。你可以像任何其他方法一样调用它:

a = ['foo', 'bar', 'baz']
a.[](1)    # => 'bar'

此外,对于具有此名称的方法,您还可以将它们称为

a[1]       # => 'bar'
于 2013-09-01T20:36:17.187 回答
0

你读过这个Array#[]吗?它会给你一些想法。

   [1,2].[](1) # => 2
         |  |
--------->  <---------
method name  argument
于 2013-09-01T20:33:47.287 回答