突然今天发现一大神的博客:http://www.cnblogs.com/jackluo/archive/2013/01/22/2871655.html 相信初学者会受益颇多
ruby 参考文档:http://www.tutorialspoint.com/ruby/
关于ruby 的算法:http://liuzxc.github.io/blog/sorting-algorithm/
变量类型 |
描述 |
示例 |
局部变量(或伪变量) |
以小写字母或下划线卡头 |
var _var |
全局变量 |
以$开头 |
$var |
类变量 |
类中定义,以@@开头 |
@@var |
实例变量 |
对象中定义,以@开头 |
@var |
常量 |
以大写字母开头 |
Var |
一 ruby 中的关键字
1.模块定义:module
2.方法定义:def , undef
3.检查类型:defined?
4.循环语句:redo 重新开始循环,从这一次开始,retry 重头开始这个循环体,yield ,next 忽略本次循环的剩余部分,开始下一次的循环
5.逻辑判断:not ,and ,or
6.空值:true ,false , nil
7.异常处理:rescue ,ensure
Ruby中用begin/end …rescue…ensure … raise 来处理异常,retry可以用在rescue中。可以只用rescue或是ensure,两者都使用时,rescue必须在ensure前。
8.对象引用:super ,self
9.块的起始:begin/end
10.文件相关:__FILE__ , __LINE__
11.别名: alias
二 ruby的数据类型
1.数字,字符串,数组,哈希表,区间,正则表达式
2.数组的每个元素可以是不同的类型:[ 2.4, 99,“thank you”,[ a, b ,c ] ,78 ]
3.区间:1..5 表示1,2,3,4,5
1...5表示1,2,3,4
三 ruby 的赋值运算(#号后面的是结果)
a = 1 ;b = 2 + 3 #a=1 ,b=5
a ,b = b ,a #a=5 ,b=1
a = b = 1 + 2 + 3 #a=6 ,b=6
a = (b = 1 + 2) + 3 #a=6 ,b=3
x = 0 #x=0
a,b,c = x, (x+1), (x+2) #a=0 ,b=1,c=2
四 条件运算符
<=>
比较两个对象的大小,大于、等于、小于 分别返回1,0,-1
"aab" <=> "acb" # -1 (第二个 a 的 ASCII 码小于 c)
[5] <=> [4,9] # 1 (第一个元素 5 > 4)
===
右边的对象是否在左边区间之内,返回 true, flase
puts (0..9)=== 3.14 #true
puts ('a'..'f')=== 'c' # true
=~(匹配)
用来比较是否符合一个正则表达式,返回模式在字符串中被匹配到的位置,否则返回 nil
!~ (不匹配)
断言不符合一个正则表达式,返回 true, flase
<= < > >=
小于等于 小于 大于 大于等于
五 条件判断语句
1. case when
x=3
case x
when 1..2
print "x=",x,";在 1..2中"
when 4..9, 0
print "x=",x,";在4..9,0中,或是0"
else
print "x=",x,";其它可能"
end
2. until
a=1
until a >=10
print a," "
a=a+1
end
3. while
a=1
while a <10
print a," "
a=a+1
end
一边是while a <10,一边是until a >=10,其它代码都一样,结果也一样
4. for in
for i in 1..9
print i," "
end
六 关键字
times , upto , downto , each ,step
3.times { print "Hi!" } #Hi!Hi!Hi!
1.upto(9) {|i| print i if i<7 } #123456
9.downto(1){|i| print i if i<7 } #654321
(1..9).each {|i| print i if i<7} #123456
0.step(11,3) {|i| print i } #0369
七 对象
1. 属性的简写
attr_writer :motherland 相当于
def motherla