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