如何使用方括号调用带参数的方法?

时间:2015-12-23 20:18:56

标签: ruby

我想在一个类中定义一个方法,当调用它时,它就像一个哈希,接受[]而不是()的参数。

def content(key)
end

我希望使用这种语法来访问它:content[:benefits]而不是content(:benefits)

4 个答案:

答案 0 :(得分:3)

您可以使用lambdas

执行此操作
content = ->(key) { "content for #{key}" }

content[:benefits] # => "content for benefits"

答案 1 :(得分:1)

content的课程中

def [] key
  ...
end

答案 2 :(得分:1)

  

我想在类中定义一个方法,当调用它时,它就像一个哈希

唯一的方法是,该方法返回一个响应[]的对象。有关示例,请参阅Rails中的params方法。

答案 3 :(得分:0)

你可以创建一个没有参数的方法,它返回一个哈希:

def content
    {
        :beneficts => 1000
    }
end

p content[:beneficts]
> 1000