如何在[]
上将参数传递给A
的单例方法的定义,换句话说,就是A['some_argument']
?
class A
def self.[]
# some_argument
end
end
答案 0 :(得分:8)
与其他方法一样,使用参数列表:
class A
def self.[](arg)
puts arg
end
end
A[1]
# => 1
答案 1 :(得分:7)
已经给出了很好的答案,但是我认为他们没有提到一个重要的观点。
方法[]
通常以foo[params]
的形式使用时,实际上是语法糖形式。基础方法名称为[]
,以基础形式调用它的方式为foo.[](params)
。
语法糖使用语法,并将形式为foo[params]
的方法调用转换为foo.[](params)
。但这在方法定义中不起作用,因此您必须以基础形式而不是语法糖形式定义这种方法。
答案 2 :(得分:5)
class A
def self.[](*args)
puts args
end
end
> A[1,2,3]
1
2
3
答案 3 :(得分:1)
您还可以实现“设置”功能
class A
def self.[]=(key, value)
puts "#{key} = #{value}"
end
end
A['one'] = '1'
# one = 1