当前位置:  开发笔记 > 编程语言 > 正文

红宝石是强力还是微弱的打字?

如何解决《红宝石是强力还是微弱的打字?》经验,为你挑选了4个好方法。

红宝石是强力还是微弱的打字?

据推测,Javascript也是如此.



1> Pop Catalin..:

Ruby是" 强类型 ".

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

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

编辑:这个答案发布已经有6年了,我认为这需要一些额外的澄清:

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

与大多数典型的动态语言相比,Ruby是"更强"的类型(带有"呃").ruby需要明确的转换语句IE:Array("foo"),"42".to_i,Float(23)这一事实使得Ruby输入表盘更接近"强类型"结束而不是"弱类型" .

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


静态类型确实*不*暗示强类型.例如,C是静态类型的,因为编译器知道每个变量的类型,但它不是强类型的,因为内存只是内存,可以由程序以任何方式处理.
"Java是弱类型的,没有人阻止你将字符串添加到整数并获得结果":这不是弱类型而是多态.有不同的`+`操作/方法,调度基于操作数的类型.这与获取表示浮点数组的位串并将其重新解释为某个结构(如您在C和C++中所做的)不同.

2> Mase..:

Wikpedia将其标记为"动态('鸭')类型".

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

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



3> cg...:

虽然你可以讨论这些术语的定义我会说:

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



4> Marko..:

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

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有