我怎么能传递一个参数的单方法的定义[]上A,换句话说A['some_argument']?
class A
def self.[]
# some_argument
end
end
Run Code Online (Sandbox Code Playgroud)
就像任何其他方法一样,使用参数列表:
class A
def self.[](arg)
puts arg
end
end
A[1]
# => 1
Run Code Online (Sandbox Code Playgroud)
已经给出了很好的答案,但我认为他们错过了一个重要的观点.
[]通常在表单中使用的方法foo[params]实际上是语法糖形式.底层方法名称是[],并在底层表单中调用它foo.[](params).
语法糖使用语法,并将表单中的方法调用foo[params]转换为foo.[](params).但是这在方法定义中不起作用,因此您必须在底层表单中定义此类方法,而不是在语法糖形式中.
class A
def self.[](*args)
puts args
end
end
> A[1,2,3]
1
2
3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |