Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中是否存在多态性?_Ruby_Polymorphism - Fatal编程技术网

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也支持多态性,这可能是正确支持多

Ruby中是否存在多态性?我读到Ruby不支持多态性,相反,它支持方法重载和方法重写。有人能给我举个例子来说明这一点吗?

是的,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”,并在句子之间和标点符号后使用适当的间距。那东西真的很重要。