ruby - 动态类型、鸭子类型和参数多态性之间有什么区别?

标签 ruby language-agnostic

<分区>

动态类型、鸭子类型、多态和参数多态之间有什么区别?

我问是因为 Ruby 有这些 ( according to Wikipedia ),尽管我更感兴趣。

最佳答案

动态类型意味着您不需要定义变量的类型,语言解释器会尝试猜测该变量的类型(数字、 bool 值、字符串等)。

Duck typing 意味着我们对对象的类型不感兴趣,相反我们更关心对象的功能方面:如果对象返回我们感兴趣的那些方法,那么这意味着该对象满足我们的要求。因此有一句众所周知的话:“如果一只鸟走路像鸭子,游泳像鸭子,叫声像鸭子,那只鸟就是鸭子”

来自 Wikipedia : parametric polymorphism 是一种使语言更具表现力的方法,同时仍然保持完全静态类型安全。使用参数多态性,可以通用地编写函数或数据类型,以便它可以在不依赖于它们的类型的情况下以相同的方式处理值。

关于ruby - 动态类型、鸭子类型和参数多态性之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14625654/

相关文章:

Ruby 的 awesome_print 到 STDERR

ruby - Dashing 在启动时没有提示,我如何才能找到更多信息?

unit-testing - 像 isInUnitTest() 这样的检查是反模式吗?

algorithm - 美丽的弦

language-agnostic - 契约(Contract)设计和测试驱动开发

ruby - 如何在 Ruby 中实现 slice_after(或将某些元素与某些后续元素分组)?

ruby-on-rails - 使用 JBUILDER 呈现回形针 URL

ruby - 在什么情况下Linux epoll_wait会返回epoll_events结构体并带有空的events字段?

math - float 学有问题吗?

language-agnostic - 网站应该如何处理本地化设置? (来自 “What are common UI misconceptions and annoyances?” )