参考:Ruby官网快速入门
特点:动态 开源 甜味十足的语法糖 易读 优雅简洁
但运行速度也许不够快 没有分号结尾(万岁)
ruby-Hello World:
ruby的'hello world': puts 'hello world'
ruby的每个语句都有返回值 比如上面的puts会返回nil---ruby的absolutely-positively-nothing
ruby以module组织形成代码库,ruby已经初始内置了许多module 比如 Math
ruby-函数:
语法:def <函数名>[(参数)]
body
end
例子:
以 def ~ end语法 与 lisp的括号 ,python的缩进,c的{}相比初体验还阔以。
带参数的函数:
类似于php,perl有字符串插值,使用#{你要插入的字符串的变量名}
函数如何调用:
1.函数名(args)
2.函数名 空格 args
ruby-类:
类似于def ~ end创建函数 使用class ~ end 创建类
Notes:类名一个首字母大写(必须)
例子:
类的创建:
initialize函数显然就是构造函数,初始化函数 @name是实例变量 而以@@打头的是累变量
类的实例化:
错误:注意使用@name 而不是 name (动态语言的的缺点显示出来了,不能静态检查)
修改后类的创建:
类的实例化:
使用classname.new来创建实例,而不是像python使用classname()创建实例
实例化的对象使用:
与python,java等相似使用实力实例名.函数名来调用方法,但是不同的是对实例的变量访问。
上例中对这个Greet类的实例greet_to_dog,会很自然使用greet_to_dog.name或者greet_to_dog.@name来访问
但是显然ruby中的对象并不喜欢随意向外暴露它的数据。
如果需要你要自己定义队变量的set和read方法,当然
ruby中有更好的语法糖,使用attr_accessor :name来简化,这会自动加上name和name=这2个方法。如下图
上面这个例子还展现了ruby的另一个特性:
自由的修改类,新修改的类会对已经生成和以后生成的实例对象即可生效
更复杂的例子:
运行结果:
这个新的Greet的say_hi和say_bye函数能处理names是nil或者是数组或者是字符串3 种情况,
显然ruby中返回bool值函数名统一使用?结尾
上例中,respond_to? 就是检测变量names是否含有each或者join方法,而nil?的意思显而易见
ruby中的迭代:
each接受一个代码块,并且对每个要迭代的元素都执行这个代码块一次,通过|name|向这个代码块传递这个迭代元素
代码块就相当
作为脚本语言,if __FILE__ == $0显然类似python中的if __name__ ==" __mian__"
其作用是:__FILE__ 是一个魔法值,它存有现在运行的脚本文件的名字。$0 是启动脚本的名字。 代码里的比较结构的意思是 “如果这是启动脚本的话…” 这允许代码作为库调用的时候不运行启动代码, 而在作为执行脚本的时候调用启动代码
像很多动态解释型语言 ruby也有repl交互式命令行irb