【发布时间】:2015-01-23 23:08:34
【问题描述】:
由于 Ruby 不支持重载(由于几个微不足道的原因),我正试图找到一种“模拟”它的方法。
在静态类型语言中,你不能使用instanceof,(当然某些特殊情况除外......)来指导应用程序。
所以,请记住这一点,这是重载我关心变量类型的方法的正确方法吗? (在这种情况下,我不关心参数的数量)
class User
attr_reader :name, :car
end
class Car
attr_reader :id, :model
end
class UserComposite
attr_accessor :users
# f could be a name, or a car id
def filter(f)
if (f.class == Car)
filter_by_car(f)
else
filter_by_name(f)
end
end
private
def filter_by_name(name)
# filtering by name...
end
def filter_by_car(car)
# filtering by car id...
end
end
【问题讨论】:
标签: ruby overloading