我想了解一个不是我写的代码。我如何知道方法所期望的参数类型?例如,让我们说我有一个方法:
def foo(bar)
@bar = bar
@baz = get_user(@bar.user)
end
我如何知道应该向bar发送哪个对象?
答案 0 :(得分:4)
您无法知道foo
等待接收的参数类型,您只知道该对象必须在您的示例中响应user
。
这个原则被称为Duck Typing:通过正常输入,假定适合性仅由对象类型决定。在鸭子打字中,对象的适用性取决于某些方法和属性(具有适当含义)的存在,而不是对象的实际类型。