ruby强烈还是弱类型?

ruby强烈还是弱类型?

据推测,Javascript也是如此。

Ruby是“ 强类型 ”。

强类型意味着在对其执行需要某种类型的操作之前检查对象的类型(不是在OOP意义上,但在一般意义上)。

弱类型意味着不进行检查以确保操作可以在对象上成功。 (例如,当一个函数访问一个字符串和浮点数组时,如果没有进行类型检查,则允许该操作)

编辑:这个答案发布已经过去了6年,我认为这需要一些额外的说明:

多年来,“类型安全是表盘不是绝对的”的概念开始被用于支持二元意义(是/否)

与大多数典型的动态语言相比,Ruby是“更强”的类型(带有“呃”)。 事实上ruby需要明确的转换语句IE:Array(“foo”),“42”.to_i,Float(23),使得Ruby输入拨号盘比“弱类型”更接近“强类型”端谱。

所以我会说“Ruby是比大多数常见动态语言更强大的动态语言”

Wikpedia将其标记为“动态(’鸭’)类型”。

关于Pop关于它是“强类型”的评论 – 我不确定他的解释是否真的符合封面下的内容。 MRI没有真正“检查”以查看是否可以对对象执行操作; 它只是向对象发送消息,如果该对象不接受该消息(通过方法声明或通过在#method_missing中处理它)barfs。 如果运行时实际检查以确保操作可行,则#method_missing将不起作用。

此外,应该注意的是,由于Ruby中的所有内容都是一个对象(我的意思是一切 ),我不确定他所说的“不是在oo-sense中”是准确的。 在Ruby中,您既可以是对象,也可以是消息。

虽然你可以对这些术语的定义进行论证,但我会说:

Ruby是动态和强类型的,而JavaScript是动态和弱类型的。

恕我直言Ruby强烈但动态地输入。

我会认为这些语言是鸭子类型 。

过于简化的答案是ruby和javascript都是弱类型的。

然而,这个问题并不像看起来那么明确 – 请参阅这篇维基百科文章 ,以深入讨论强类型和弱类型语言之间的区别。