Ruby中是否存在多态性?
Ruby中是否存在多态性?我读到Ruby不支持多态性,相反,它支持方法重载和方法重写。有人能给我举个例子来说明这一点吗?是的,Ruby确实支持多态性。 考虑简单类继承的情况,其中派生类的实例“是”子类和父类的实例:Ruby中是否存在多态性?,ruby,polymorphism,Ruby,Polymorphism,Ruby中是否存在多态性?我读到Ruby不支持多态性,相反,它支持方法重载和方法重写。有人能给我举个例子来说明这一点吗?是的,Ruby确实支持多态性。 考虑简单类继承的情况,其中派生类的实例“是”子类和父类的实例: class Parent; end class Child < Parent; end o = Child.new o.is_a?(Child) # => true o.is_a?(Parent) # => true 当然,Ruby也支持多态性,这可能是正确支持多
class Parent; end
class Child < Parent; end
o = Child.new
o.is_a?(Child) # => true
o.is_a?(Parent) # => true
当然,Ruby也支持多态性,这可能是正确支持多态性问题的困惑之源。是的,Ruby确实支持多态性。
考虑简单类继承的情况,其中派生类的实例“是”子类和父类的实例:
class Parent; end
class Child < Parent; end
o = Child.new
o.is_a?(Child) # => true
o.is_a?(Parent) # => true
当然,Ruby也鼓励这样做,这可能是关于正确支持多态性问题的混淆源。Ruby是一种高度多病态的语言,从某种意义上说,只要对象的行为符合预期,方法不会自动推断传递给它们的数据类型。例如:
def concat(a,b)
a.to_s + b.to_s
end
concat('a', 'bcd') #=> "abcd"
concat(5, 10) #=> "510"
concat([1,2,3], ' is an Array') #=> "[1, 2, 3] is an Array"
只要
a
和b
响应到
,该功能将按预期输出。查看有关Duck类型的更多示例。Ruby是一种高度多病态的语言,从某种意义上说,只要对象的行为符合预期,方法不会自动推断您要传递给它们的数据类型。例如:
def concat(a,b)
a.to_s + b.to_s
end
concat('a', 'bcd') #=> "abcd"
concat(5, 10) #=> "510"
concat([1,2,3], ' is an Array') #=> "[1, 2, 3] is an Array"
只要
a
和b
响应到
,该功能将按预期输出。查看有关Duck类型的更多示例。Ruby不支持方法重载。方法重载的想法在动态类型语言中甚至没有意义
Ruby确实支持即席多态性,就像地球上几乎所有面向对象的语言一样。Ruby不支持方法重载。方法重载的想法在动态类型语言中甚至没有意义
Ruby确实支持特殊多态性,就像地球上几乎所有面向对象的语言一样。这听起来像是在恳求有人为你做功课。你已经收到了反对票,因为,我怀疑,没有提供任何证据证明你已经对这个问题进行了研究。此外,请学习如何格式化你的问题,大写像“Ruby”,“I”,并在句子之间和标点符号后使用适当的间距。这些东西真的很重要。这听起来像是在恳求有人帮你做家庭作业。你已经收到了反对票,因为,我怀疑,没有提供任何证据证明你已经对这个问题进行了研究。此外,请学习如何格式化你的问题,大写像“Ruby”,“I”,并在句子之间和标点符号后使用适当的间距。那东西真的很重要。