【发布时间】:2017-04-21 02:23:38
【问题描述】:
我试图理解不是我编写的代码。我如何知道方法期望的参数类型?例如,假设我有一个方法:
def foo(bar)
@bar = bar
@baz = get_user(@bar.user)
end
我如何知道我应该将哪个对象发送到 bar?
【问题讨论】:
我试图理解不是我编写的代码。我如何知道方法期望的参数类型?例如,假设我有一个方法:
def foo(bar)
@bar = bar
@baz = get_user(@bar.user)
end
我如何知道我应该将哪个对象发送到 bar?
【问题讨论】:
您无法知道foo 正在等待接收什么样的参数,您只知道在您的示例中该对象必须响应user。
这个原则被称为 Duck Typing:对于普通类型,假设适用性仅由对象的类型决定。在鸭子类型中,一个对象的适用性是由某些方法和属性的存在(具有适当的含义)决定的,而不是对象的实际类型。
【讨论】: