浏览 8120 次
锁定老帖子 主题:关于RUBY语法的看法
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-06-07
看了几天的ROR资料了。 本来不相信ROR会有传说中的那么神奇,但现在有那么一点点认识了。 但我认为很多人学习ROR只是因为自己擅长的语言里没有一个这样有严格约定的框架及工具(看来人不一定要完全的自由的,没有纪律要付出比较多的代价)。 但现在的问题是ruby在语法上的改变太多了,我也说不上是好还是坏,毕竟还没到那个层次: session[:cart] ||= Cart.new 这样的写法聪明是聪明,也很简单,可是有很多语法在各种语言之间已经像是公约一样的了,就像:if else,不管我们擅长的是哪种语言,但看其他语言的代码总是比较容易理解的。 现在的情况是:如果不是准确的知道RUBY的语法,你基本上是一点东西也写不出来的。 但到底要聪明还是要通用,这看来是个哲学问题了,要辩证分析。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-06-07
我也在刚刚开始学习ruby,算是一个ruby newbie,针对你的问题,我是这样想的:
我现在还是看的是ruby,还没有开始学习rails,你这个表达式我是这样猜想的: session[:cart] ||= Cart.new 相当于 session[:cart] = session[:cart] || Cart.new() ||=这种类似运算符应该不算陌生,C/C++/Basic/Pascal哪种语言都有 含义就是从session找购物车信息,如果没有的话,就新创建一个购物车。含义相当明确,应该不算看不懂。 我最近学习ruby,对ruby语法也稍微有一点不适应,不过总体而言还是比较愉快的体验。ruby语法近似于smalltalk,也借鉴了lisp,但与Java/C++/C#却相去甚远,另外ruby东西直接来自于Unix shell,让我感觉非常熟悉。 总之,我觉得不要拘泥于Java的惯性思维, 你就会发现学习ruby很容易的。 |
|
返回顶楼 | |
发表时间:2006-06-09
嗯,我会努力适应ROR的学习方式的,你看:
:id=>product,是:id=>product.id的习惯缩写 这都行,唉 看来学习ROR时,有两个注意事项: 1、不要问那么多为什么:很多方法就是规矩,只要听话就是好孩子 2、尽量不要想如果不守规矩应该怎么样:如果想顺着自己的想法做的话,你就发现所有的快捷方法都成了要克服的拦路虎,然后就发现ROR没有任何价值 |
|
返回顶楼 | |
发表时间:2006-06-09
fyol 写道 嗯,我会努力适应ROR的学习方式的,你看:
:id=>product,是:id=>product.id的习惯缩写 这都行,唉 看来学习ROR时,有两个注意事项: 1、不要问那么多为什么:很多方法就是规矩,只要听话就是好孩子 2、尽量不要想如果不守规矩应该怎么样:如果想顺着自己的想法做的话,你就发现所有的快捷方法都成了要克服的拦路虎,然后就发现ROR没有任何价值 :id=>product 不是 :id=>product.id的习惯缩写吧?我猜是调用者做了智能处理,类似这种形式: obj_id = obj.kind_of?(ActiveRecord::Base) ? obj[:id] : obj ... RoR的很多便利(规矩)是靠ruby语言的优秀来支撑的,所以RoR的学习个人觉得与ruby的学习结合着来效果比较好,也可以自己定些规矩给别人用,有点BT的快感,呵呵~ 相反倒是觉得应该多问为什么,按自己预想的方式试,如果不行再找它的方案,也许会发现自己预想的方式有缺陷。。。 多拿出自己的想法出来与大家一起提高啊~ |
|
返回顶楼 | |
发表时间:2006-06-09
fyol 写道 嗯,我会努力适应ROR的学习方式的,你看:
:id=>product,是:id=>product.id的习惯缩写 这都行,唉 看来学习ROR时,有两个注意事项: 1、不要问那么多为什么:很多方法就是规矩,只要听话就是好孩子 2、尽量不要想如果不守规矩应该怎么样:如果想顺着自己的想法做的话,你就发现所有的快捷方法都成了要克服的拦路虎,然后就发现ROR没有任何价值 这不是缩写,这是因为ActiveRecord过载了默认的Object.id方法,使id返回的是表中id字段的值而不是内存中对象的id。 各种软件工程方法都有规矩,没有规矩不成方圆。你熟悉了规则以后就可以自己定义规则并贯彻到团队中或者反馈给社群。ROR数量高速增长的大量插件就是规则外的规则。生活难道不也是这样么? |
|
返回顶楼 | |