一、简介
Ruby是日本的Yukihiro Matsumoto写的,简单易学的面向对象的脚本语言,像perl同样,有丰富的文字处理、系统管理等丰富 功能,可是ruby要简单,容易理解和扩充。跟python很相似,可是在国内远没有python有名。java
Ruby是一种功能强大的面向对象的脚本语言,可使用它方便快捷地进行面向对象程序设计。与Perl相似,并且Ruby具备强大的文本处理功能,使文本处理变得简单。此外还能够方便地使用C语言来扩展Ruby的功能。
若您曾经“想要一种简单的面向对象的语言”,或者认为“Perl的功能虽然好用,但它的语法真让人受不了”,又或者以为“LISP系列语言的思想不错,但处处都是括号真让人讨厌,最起码算式应该按照一般的样式书写”。那么,Ruby或许能让您满意。
概括起来,Ruby有如下优势:
解释型执行,方便快捷
Ruby是解释型语言,其程序无需编译便可执行。
语法简单、优雅
语法比较简单,相似Algol系语法。
彻底面向对象
Ruby从一开始就被设计成纯粹的面向对象语言,所以全部东西都是对象,例如整数等基本数据类型。
内置正则式引擎,适合文本处理
Ruby支持功能强大的字符串操做和正则表达式检索功能,能够方便的对字符串进行处理。
自动垃圾收集
具备垃圾回收(Garbage Collect,GC)功能,能自动回收再也不使用的对象。不须要用户对内存进行管理。
跨平台和高度可移植性
Ruby支持多种平台,在Windows, Unix, Linux, MacOS上均可以运行。Ruby程序的可移植性很是好,绝大多数程序能够不加修改的在各类平台上加以运行。
有优雅、完善的异常处理机制
Ruby提供了一整套异常处理机制,能够方便优雅地处理代码处理出错的状况。
拥有不少高级特性
Ruby拥有不少高级特性,例如操做符重载、Mix-ins、特殊方法等等,是用这些特性能够方便地完成各类强大的功能。
通常认为,他有以下特色:python
二、环境安装正则表达式
(1).安装1.能够从www.ruby-lang.org下载源代码进行安装。shell
(2).解压缩源文件,进入安装目录数据库
#./configuremakeexpress
#make api
#installruby
3.使用闭包
(1). 使用irb。irb是一个交互接口,在shell里运行它,首先显示提示符,等待输入;用户输入以后,它在进行处理,把结果显示给用户。socket
#irb irb(main):001:0> $str="hello world!/n" => "hello world!/n" irb(main):002:0> print $str hello world! => nil irb(main):003:0> |
(2).像其余语言同样,从程序文件运行
[root@tserver /root]# chmod a+x foo.rb [root@tserver /root]# cat foo.rb #!/usr/local/bin/ruby -w puts "Hello, World!"
[root@tserver /root]# ruby foo.rb Hello, World! [root@tserver /root]# ./foo.rb Hello,World! [root@tserver /root]# |
(3).Ruby使用方法
ruby [ option ...] [ -- ] [ programfile ] [ argument ...]pre>
关于Ruby的命令行参数,能够参考相关文档。
4.简单例子
def sayGoodnight(name) # Time for bed... |
能够看到,ruby的语法仍是比较简单的,首先,你没必要每行都写个分号, Ruby注释以#开头,直到行尾。
Methods定义以关键字def开始,接着是方法名和方法参数, ruby不须要用braces来界定程序主体,只须要关键字end就好了。
这个程序也至关简单,第一行把``Goodnight, ''加上参数name,并把它赋给了局部变量result,第二行把结果返回给调用者。注意咱们不须要定义变量result。
最后咱们调用了2次这个方法,并把结果传给puts函数,这个函数简单的再新行上打印传给它的参数而已,最后结果像这样:
Goodnight, John-Boy Goodnight, Mary-Ellen |
其实 puts sayGoodnight("John-Boy") 包括了2个函数调用,一个put系统函数,一个sayGoodnight函数。可是为何puts调用没有用括号呢?实际上,下面的调用都是等价的:
puts(sayGoodnight "John-Boy") puts(sayGoodnight("John-Boy")) puts sayGoodnight("John-Boy") puts sayGoodnight "John-Boy" |
可是若是都不写括号,你知道那个参数传给谁吗?因此仍是建议在方法后面加上括号,方便阅读源程序。
这个方法还展现了string对象,有不少种办法能够建立string对象,但最普通的要算用string literals了:单引号或双引号包起来的一组字符。它们的区别是ruby构建这两种字符串时要作的操做。对单引号引发来的字符串来讲,ruby作的工做会不多,单引号引发来得部分就是它的值。若是是双引号引发来得,则要作多一些工做了。首先,它检查是否包含反斜线,也就是转义符,而后用适当的二进制值代替,最多见的就是"/n"了,它将会被换行替换。如:
puts "And Goodnight,/nGrandma" |
产生结果以下:
And Goodnight, Grandma |
第二件事情就是expression interpolation。#{ expression }被expression的值代替,例如,下面的方法和刚才的例子是同样的结果
def sayGoodnight(name) result = "Goodnight, #{name}" return result end |
固然咱们还能够再简化这个函数。一个ruby函数返回的结果就是最后一行的值,因此这个函数也能够写成以下:
def sayGoodnight(name) "Goodnight, #{name}" end |
Ruby使用俗定的命名方式为变量命名,变量名的第一个字母标志了它的类型,是局部变量,仍是方法参数,方法名应该以小写字母或者下划线开头,全局变量应该以$开头,实例变量以@开头, class变量以@@开头,而类名,模块名,常量应该以大写字母开头。 一个名字能够是字母,数字,下划线的任意组合,可是有@后面不容许直接跟着一个数字。 总之,做为一门语言,不是一两个例子,几个文章能说清楚地,在网上流传的我爱ruby的10个缘由等跟天下足球top ten相似的短文中,总会看到一个理由,就是fun with ruby。也许,更有趣的还在后面。