我遇到了以下代码:
class Duration
def self.[](magnitude)
...
end
end
我可以做以下事情:
Duration.[]("2 weeks")
以及:
Duration["2 weeks"]
我放在"2 weeks"
里面的值[ ]
如何作为参数传递给方法?
答案 0 :(得分:1)
在对@Nabin Paudyal的评论中回答你的问题。 这条线
def self.[](magnitude)
class Duration
体内的表示英文(红宝石味):
"打开对象Duration
的单例类并添加到其中'实例方法' for object(在我们的例子中是Class
类的对象 - 名为Duration
)"
通常看起来应该是这样的:
def self.method_name(arguments)
在此之后你可以这样称呼它:
object.method_name(arguments)
在您的情况下,对象的名称是Duration
(类),方法的名称是[]
。
因此,呼叫应如下所示:
Duration.[](argument)
换句话说,你是完全正确的。它是"调用某种方法"。
答案 1 :(得分:0)
这是因为Ruby语言就是这样设计的。
我们采取以下示例。
array = [1, 2, 3, 4, 5]
此处以下两个代码都会产生相同的结果。
puts array[2]
puts array.[](2)
Ruby的Array类具有以下方法
[](index)
此方法返回指定索引处的元素。
array[2]
也被解释为
array.[](2)
在计算结果之前。
希望这会对你有所帮助。