热门关键字:  ubuntu  分区  linux系统进程  函数  Fedora

当前位置 :| 主页>Linux教程>编程开发>Ruby>

Ruby和Python的语法差别

来源: 作者: 时间:2007-09-12 Tag: 点击:
其实python和ruby非常接近,比大多数别的语言要接近的多,所以喜欢用啥就用啥(大实话,虽然也是废话)。语法上的差别虽然有那么一点,大部分是syntax sugar,我斗胆稍微列几个(python我也忘得差不多了,不对的大家尽管来鞭尸吧),但是主要差异还是设计思想上的:灵活vs明确. 我不认为两者在生产力上会有什么差别,如果你熟悉的话。*注意,仅限语言本身的比较。

1. ruby的case可以匹配很多东西:范围/数组,对象,正则表达,python没有case/switch而使用if/else比较死板点

2. python的缩进很漂亮,虽然有时会造成些许麻烦。ruby的end蛮难看的,所以大家都被逼当one liner(玩笑)

3. 感觉上ruby比python更OO,当然这也可能是因为python不提倡用那些改变对象内部构造的‘伎俩’造成的错觉

4. python有list comprehension, ruby没有:(

5. python有真正的keyword argument, ruby用hash模拟,当然实际用起来没什么差别

6. python的self很讨厌,ruby没有那种繁琐的东西

7. reflection,ruby内置了很多方法,比如object.methods,而python把这些信息存在特殊的字典里。差不多

8. ruby的block功能很强,python的lambda只能返回单一值

9. ruby的open class已经声明远播,可以玩出2.days.ago这样的花样,python好像没法直接修改内置类也反对这么做。

10. python需要用@classmethod修饰声明类方法,ruby是内建

11. ruby有单子方法,也就对对象单独定制,python不知道有没有类似概念

12. ruby有method_missing机制,python可以使用__getattr__截获未定义方法(from qiezi)

13. ruby使用单继承+mixin,python使用多重继承,不过python也有mixin

14. ruby有attr_*系列语法helper,省却自己写一堆setter/getter, python的property方法还是得自己写setter/getter


上一篇:Ruby基础语法
下一篇:扩展Ruby
最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
栏目列表