ruby语⾔是什么东西
1、简介
Ruby是⽇本的Yukihiro Matsumoto写的,简单易学的⾯向对象的脚本语⾔,像perl⼀样,有丰富的⽂字处理、系统管理等丰富功能,但是ruby要简单,容易理解和扩充。跟
python很类似,但是在国内远没有python有名。
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、特殊⽅法等等,是⽤这些特性可以⽅便地完成各种强⼤的功能。
⼀般认为,他有如下特点:
简单
解释型语⾔(インタプリタ),所以不必事先编译(コンパイル)。
变量没有类型的区分,虽然可以省去类型错误的担忧,但也会引起编译时候检查的脆弱。
变量不需要定义。
简单的语法,多从Eiffel继承⽽来。
不需要内存管理,系统提供GC(ガーベージコレクタ)处理机制。
纯的⾯向对象的语⾔
⼀切都是对象,像整数等类型从开始就被设计为对象来处理。
class(クラス),继承,method(メソッド)等
(特殊⽅法?)特異メソッド
module(モジュール)によるMixin
迭代(イテレータ)和闭包(クロージャ)。⼀个在闭包开始时定义的资源在闭包结束后会被释放,适合于socket,数据库连接,⽂件句柄等。
脚本语⾔
解释执⾏
很强的⽂字处理能⼒和正则表达式
直接访问OS,⽤ruby编写系统程序也是可能的。
其他
⽀持多种长整数,内存允许,可以进⾏很⼤数的计算操作。
具备异常处理能⼒,具备java的异常处理功能。
dynamic loading(ダイナミックローディング)。可以在运⾏时候重定义⾃⼰,类也可以在运⾏时继承/取消继承。
线程。现在的ruby已经有线程的概念,Ruby2.0好像能⽀持本地线程。
反射(Reflection)。Ruby可以看到程序的内部,⽐如⼀个模块是否含⼀个特定⽅法,⼀个对象是哪个class等等。类似java。
扩展性。C api。
发⾏许可证。基于Ruby Artistic License (BSD样式的)和GPL。
2、环境安装
(1).安装1.可以从下载源代码进⾏安装。
(2).解压缩源⽂件,进⼊安装⽬录
#./configuremake
#make
#install
3.使⽤
(1).使⽤irb。irb是⼀个交互接⼝,在shell⾥运⾏它,⾸先显⽰提⽰符,等待输⼊;⽤户输⼊之后,它在进⾏处理,把结果显⽰给⽤户。
#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)
result = "Goodnight, " + name
return result
end
# Time
puts sayGoodnight("John-Boy")
puts sayGoodnight("Mary-Ellen")
可以看到,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变量以@@开头,⽽类名,模块名,常量应该以⼤写字母开头。
⼀个名字可以是字母,数字,下划线的任意组合,但是有@后⾯不允许直接跟着⼀个数字。perl语言学习
总之,作为⼀门语⾔,不是⼀两个例⼦,⼏个⽂章能说清楚地,在⽹上流传的我爱ruby的10个原因等跟天下⾜球top ten类似的短⽂中,总会看到⼀个理由,就是fun with ruby。也许,更有趣的还在后⾯。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。