本人一直对 RoR 很感兴趣, 以前一直只是看一些评论, 介绍等, 直到最近才正式开始学习 Ruby, 目前碰到几个问题, 希望得到各位的帮助:
关于 Ruby 的特性, 与其它语言 C#, Java, PHP, Python 相关有何优势?
目前我仅了解到 module, mixin, yield, 在某些方面所带来的好处, 除了这些还有哪些特性是很重要的呢?
关于 Rails 中 ActiveRecord 的定义:
[code="ruby"]
class Product < ActiveRecord
belongs_to :category
...
end
[/code]
其中 belongs_to 是在类定义的块中, 那么它究竟是一个什么东西? 属性,方法的定义或调用?
它是解释执行的,解释器读一行执行一行,你写完代码不用编译,不用重启服务器,马上就能看到结果;
它是duck type的,你只需要检查对象是否响应一个方法,不需要检查对象的类型,写起来很灵活;
用测试和契约代替类型检查,用validate代替外键约束;
元编程能力很强,你可以动态的定义方法和对象,就像那行belong_to,它给Product类生成一系列方便的method,给你节省了很多定义DAO的工作;
任何东西都是对象,集合和字符串操作简单又强大(做同样的事情,动态语言的代码总是短得多);
贴近自然语言,而且更容易写出清爽的短句(也很容易写出让人看不懂的长句);
语法糖让你可以少写很多不必要的标点符号……
另外,我一直觉得ruby写view的好处是<% end %>比<% } %>好看……
(<% } %>太难看绝对是jsp中各种模版层出不穷的主要原因……)
不需要学各种设计模式,因为很多模式就蕴含在语言之中。
缺点当然也不少,譬如比C慢很多,和windows之间有斥力等……不过开发速度的加快使你有更多的时间来优化代码,而且rails应用的运行速度绝对不慢。
与其它动态语言比较,除去语法的那层皮和rails的光环,区别其实不大-_-
第一点不太好说
第二点:ruby的类也是对象,类中也可以执行方法调用。belongs_to是方法调用,它没有指明方法接受者就是self,代表Product这个对象(class Class的实例)。