背景:这两天因为要做logstash插件,所以需要学习一下ruby才能看懂这些插件的源码。
看了两天ruby的语法文档,ruby的语法很多地方都可以让我联想到其他的一些语言或者说规范:
- ruby的位运算 --- C语言位运算
- ruby中块的概念 --- nginx配置文件中的块
- ruby的include引入“模块” --- nginx配置文件include引入文件
- ruby用::引用类方法 --- c++中有类似的功能
- ruby有here document 可以直接运行shell
- ruby --- logstash插件
ruby的特点:
- ruby中一切皆对象,一切皆有值,即使是一个表达式也有值(这一点我并没有理解到有什么意义)
- ruby中做一件事往往有很多中方法,这与python一件事只用一种方法的理念不同,这导致ruby的语法非常灵活,但是有时候会显得有点乱。这一点我更喜欢python的哲学,因为我们可以把精力更多用在问题上。
- ruby没有多继承,但是可以用mixin实现多继承
- ruby中两个内容相同的字符串是两个不同的对象,对象地址也不同;但是两个内容相同的symbol对象,其对象地址是一样的。在python里,对于数值、字符串和元组等不可变对象来说,值相等的对象是引用同一个对象,其对象地址是相同的。