我一直在研究一个类项目的Ruby on Rails。我一直听到“Ruby中的一切都是一个对象”。我不确定我理解的是为什么这是一件好事,或者如果这是件好事?“一切都是对象”是好事吗?
回答
一个反例是,在Java中Integer
是一个对象,但int
不是,这意味着不同的操作同时适用于(当然在最新的Java有自动转换到/从对象的版本,但是这会带来意想不到的性能问题)。由于间接性,对象稍慢一些,但更灵活;一切都是一个对象意味着一切都表现一贯。 Java也会是一个例子:一个数组不是一个对象,并且在事实之后(甚至是多个第三方实现)被闩上,因此与集合类迭代器的工作方式不一致。
另一个反例:在JS'null'和'undefined'不是对象,所以当你期待数组中,如果'param'可能为'null',则不能仅仅说'if(param.length)'。在Ruby中,你可以修改'nil'来使用自定义方法(比如Rails中的'blank?',所有对象都会响应)。 – Phrogz 2012-04-12 22:44:58
在Java中,数组*是*对象 - 它们对它们没有太多有用的东西,因此所有其他的东西(可以说)应该在数组上。 – delnan 2012-04-12 22:49:22
显然,[Oracle的计划](http://www.javaworld.com/javaworld/jw-03-2012/120315-oracle-s-java-roadmap.html)从Java语言中彻底删除原语。 – 2012-04-13 00:52:46
它使Ruby非常灵活。数字和其他原始类型可以被修改或扩展。
这也可能会导致相当优雅的语法:在Ruby中
5.times { print "print this 5 times" }
一切是不是一个对象(是的,我知道他说这句话的时候,但它仍然没有完全真正的什么人通常是指) 。说“Ruby中的所有东西都评估为一个对象”比较合适。这是一个有趣的见解,为了更恰当的阐述,我会简单地引用大卫布莱克。这是一个良好的阅读:
像其他人已指出,有不是像的Java在其他语言中对象的其他原语。对于编译器和计算机来说,获得最高效的代码是一件好事,但程序员需要根据他们处理的是哪一种函数和方法来使用不同的函数和方法。
由于红宝石是专为人类而不是计算机,为了人类的生产力牺牲一点计算资源被认为是好的。因此,Ruby从来没有区分对象和基元。它肯定会降低新手的学习曲线。在内部,Ruby使用的是一种叫做标记指针的技术,就我所知,缺乏原语的性能损失并不是那么糟糕。
另一件值得注意的事情是,在Ruby中,类也是对象,这意味着即使在代码运行时,也可以轻松修改类及其行为。这种动态的特性赋予了程序员如此强大的功能,Ruby代码看起来非常简洁。 Ruby on Rails充分利用了Ruby语言的这一动态特性。
- 1. 一切都是Ruby中的对象吗?
- 2. 一切都是一个对象?
- 3. 每个文件的php对象都是好主意吗?
- 4. typeof new String(“aaa”)===“object”?一切都是一个对象,但是有原始类型?
- 5. 类声明是红宝石的洗眼液吗?一切是否都是面向对象的?
- 6. 太依赖API是一件好事吗?
- 7. 这是一个对象吗?
- 8. 是int []一个对象吗?
- 9. 事件是GOTO的面向对象吗?
- 10. 一切都设置好了,但是riak启动失败
- 11. 所有东西都是最新的(一切都不是)
- 12. 设置视口每一帧都是一个好主意吗?
- 13. 如果一切看起来都很“好”,std :: mutex :: lock会引发事件吗?
- 14. 重新使用ADO.NET命令对象是一个好主意吗?
- 15. 这是一个很好的面向对象设计吗?
- 16. 直接JSON.stringify Javascript对象是一种很好的做法吗?
- 17. 给自己分配一个对象是个好主意吗?
- 18. AS3添加和删除对象,这是一个好主意吗?
- 19. Git push将不会做任何事(一切都是最新的)
- 20. 如何处理Rails的资源使用情况?破解一切是好事吗?
- 21. 一切都是计划中的列表吗?
- 22. 对所有事物都有特殊的例外情况是否是一种好习惯?或者是更好地重用一点更抽象的异常?
- 23. 可以这样做吗?这是不是很好(在同一个对象中有一个对象)?
- 24. 绝对是测试一切还是浪费时间(Rails)是一个好习惯吗?
- 25. 记事本++基本的编程一切都很好
- 26. 让子对象有一个对其父对象的引用而不是指针是不好的做法吗?
- 27. Heroku一切都是最新的
- 28. git push说一切都是最新的
- 29. git说一切都是最新的
- 30. 为什么一切都不是黄金?
简短回答:一致性和灵活性(读作“锋利的刀”)。 – Phrogz 2012-04-12 22:41:17
什么意思?我认为这个答案会因个人意见而有所不同。 – j4y 2012-04-12 22:45:01
相关问题:http://stackoverflow.com/questions/24270/whats-the-point-of-oop – 2012-04-12 23:21:18