是强烈还是弱类型的红宝石?

问题描述:

是强烈还是弱类型的红宝石?是强烈还是弱类型的红宝石?

大概对于Javascript也是如此。

+1

你为什么认为它们会一样 - 因为Rails开发者同时使用Ruby和Javascript? – 2010-11-26 07:26:50

Ruby是“强类型”。

强键入意味着在执行需要特定类型的操作之前检查对象的类型(不是OOP意义上的,而是一般意义上的)。

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

编辑: 已回复6年,这个答案已发布,我认为它可以保证一些额外的澄清:

多年来的概念,即“类型安全是拨号不是一个绝对的”开始赞成二进制含义使用(是/否)

Ruby是“强”类型(有一个“呃”)比大多数典型的动态语言。 ruby需要明确的语句来转换IE:Array(“foo”),“42”.to_i,Float(23),使Ruby打字拨号靠近“强类型”谱端,而不是“弱类型” 。

所以我会说:“Ruby是比最常见的动态语言更强的类型的动态语言”

+0

谢谢您的澄清。有帮助。 :)。 1给你。 – Chirantan 2009-02-06 18:51:12

+23

静态类型不*意味着强大的输入。例如,C是静态类型的,因为编译器知道每个变量的类型,但是它不是强类型的,因为内存只是内存,并且可以由程序以任何方式处理。 – yfeldblum 2009-02-06 21:54:47

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

然而,这个问题并不像看起来那么明确 - 参见this wikipedia article,以便更深入地讨论强类型语言和弱类型语言之间的区别。

+2

似乎是相互矛盾: http://www.rubyfleebie.com/ruby-is-dynamically-and-strongly-typed/ 奇妙而又奇妙 ? – weepy 2009-02-06 13:36:50

我会考虑这些语言duck typed

恕我直言,Ruby强烈但动态类型。

虽然你可以进入那些术语的定义参数,我们会说:

红宝石动态和强类型的,而JavaScript是动态和弱类型。

Wikpedia标签为“动态(‘鸭’)输入”。

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

另外,应该注意的是,因为Ruby中的所有东西都是一个对象(我的意思是所有的东西都是),所以我不确定他所说的“不在一个意义上”是准确的。在Ruby中,你是一个对象或消息。