Ruby是一门面向对象的脚本语言。
Ruby On Rails简称为RoR或Rails,是按照MVC结构开发的开源网络应用框架。设计原则:Don't repeat yourself和Conventions over Configuration
RubyGems是Ruby语言的包管理工具。
《Ruby on Rails Web开发学习实录》
开发环境 window7 64 bit
1.下载rubyinstaller-3.0.0.exe
安装后自带的RubyGems, Rails 和SQLite3
命令行输入 ruby -v 和Rails --version 检查是否安装成功。
2.按照教程里的新建一个项目时,会由于网络原因下不下来gem,于是,找到万能的淘宝镜像:
3. 安装Ruby的IDE RadRails
http://www.aptana.com/products/radrails/download.html
4. Ruby基础语法学习
例:最简单的计算器:
if __FILE__ == $0
# TODO Generated stub
puts "please input number 1:"
number1=gets
puts "please input an operator:"
op=gets
puts "please input number 2:"
number2=gets
case op.chomp
when "+"
result=number1.to_i+number2.to_i
when "+"
result=number1.to_i+number2.to_i
when "+"
result=number1.to_i+number2.to_i
when "+"
result=number1.to_i+number2.to_i
end
puts "Result:#{number1.chomp}#{op.chomp}#{number2.chomp}=#{result}"
end
View Code
gets返回包含用户输入值的一行字符串,chomp去掉尾部的换行符。
4.1 变量
- 常量名一般全大写
- 局部变量用小写字母或者下划线开头
注意:方法名也是由小写字母或下划线开头,如果没有参数的话,方法名后的括号可以省略,所以必须弄明白调用的是方法还是局部变量。
- 全局变量是以$开头的
-
@
开头:实例变量(Instance variable)。 -
@@
开头:类变量(Class variable)类变量被共享在整个继承链中
4.2 数据类型
在Ruby中,基本数据类型也是对象。
Ruby支持的数据类型包括基本的Number、String、Ranges、Symbols,以及true、false和nil这几个特殊值,同时还有两种重要的数据结构——Array和Hash。
range类型:
if __FILE__ == $0
# TODO Generated stub
a=0..59
b=60...100
c=b.to_a
puts "minimum a: "+(a.min).to_s
puts "maxmum: b: "+(b.max).to_s
puts "end a : "+(a.end).to_s
puts "first b : "+(a.first).to_s
puts b.include?100
puts "c.length="+(c.size).to_s
end
输出:
minimum a: 0
maxmum: b: 99
end a : 59
first b : 0
false
c.length=40
范围迭代器:
- regect 将范围转换成一个数组,并删掉满足条件的元素
- select 将范围转换成一个数组,只选择满足条件的元素
- each 输出迭代范围内的每个元素
if __FILE__ == $0
# TODO Generated stub
count=10..20
alphabet="A".."J"
print count.reject{|i|i<15}
puts "\n"
print count.select{|i|i<15}
puts "\n"
count.each do|i|
puts i.to_s
end
end
#输出:
[15, 16, 17, 18, 19, 20]
[10, 11, 12, 13, 14]
10
11
12
13
14
15
16
17
18
19
20
符号类型:
符号对象是一个字符串、一个方法、一个类或者一个标识符的内部表现形式,在对象名前加一个冒号:就行了。
if __FILE__ == $0
# TODO Generated stub
dcy="我是女生"
ly=:"我是女生"
dcyandly=%s{dcy}
#比较内容
puts dcy.to_sym==ly
puts ly.to_s==dcy
#比较对象
puts ly==dcyandly
end
#输出
true
true
false
数组类型
组字面量通过[]中以逗号分隔定义,且支持range定义。
- (1)数组通过[]索引访问
- (2)通过赋值操作插入、删除、替换元素
- (3)通过+,-号进行合并和删除元素,且集合做为新集合出现
- (4)通过<<号向原数据追加元素
- (5)通过*号重复数组元素
- (6)通过|和&符号做并集和交集操作(注意顺序)
if __FILE__ == $0
# TODO Generated stub
#创建或初始化数组
names=Array.new
names2=Array.new(20)
names3=Array.new(4,"mac")
nums=Array.new(10) {|e| e=e*2}
nums2=Array.[](1,2,3,4,5)
nums3=Array[1,2,3,4,5]
digits=Array(0..9)
num=digits.at(6)
puts names2.size
puts names2.length
puts "#{names3}"
puts "#{nums}"
puts "#{digits}"
puts "#{num}"
end
输出:
20
20
["mac", "mac", "mac", "mac"]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
6
View Code
哈希类型
哈希是在大括号内放置一系列键/值对,键和值之间使用逗号和序列 => 分隔。尾部的逗号会被忽略。Hash 的元素没有特定的顺序。 如果顺序很重要的话就要使用数组了。
if __FILE__ == $0
# TODO Generated stub
months=Hash.new
months=Hash.new("month")
H=Hash["a"=>100,"b"=>200]
keys=H.keys
puts "#{months[0]}"
puts "#{months[72]}"
puts "#{H['a']}"
puts "#{keys}"
end
输出:
month
month
100
["a", "b"]
4.3 运算符和赋值
表达式与常量比较时用===
- 直接赋值
- 并行赋值
- 嵌套赋值
if __FILE__ == $0
# TODO Generated stub
p=2
p**=2
score=600
puts p.to_s
puts 5<=>8
puts 5<=>5
puts 8<=>5
puts (1..10)===9
puts "我是誰"==="誰是我"
s=score<100?"yes":"no"
puts s
end
输出:
4
-1
0
1
true
false
no
View Code
if __FILE__ == $0
# TODO Generated stub
#并行赋值
c,d =12,21
c,d=d,c
puts c,d
# 嵌套赋值
weather=["春","夏","秋","冬"]
b,(c,d),e=weather
puts b.to_s,c.to_s,d.to_s,e.to_s
puts "\n"
b,(c,*d),e="春",["夏","秋","不冷不热"],"冬"
puts b.to_s,c.to_s,d,e.to_s
en
输出:
21
12
春
夏
秋
春
夏
秋
不冷不热
冬
View Code
4.4 条件语句
if..elsif..else..end
if.. then..end
case expression
[when expression [, expression ...] [then]
code ]...
[else
code ]
end
4.5 循环语句
while..do ..end
for..in..do ..end
跳转语句:break---跳出当前循环
next---跳出本次循环,进入下一个循环
redo---跳出本次循环执行下一次循环,但是不简称循环条件是否成立
return----结束方法,并有返回值
if __FILE__ == $0
# TODO Generated stub
for x in 1..9
for y in 1..x
if x==y
print y,"X",x,"=",x*y,""
puts ""
else
print y,"X",x,"=",x*y," "
end
end
end
end
输出:
1X1=1
1X2=2 2X2=4
1X3=3 2X3=6 3X3=9
1X4=4 2X4=8 3X4=12 4X4=16
1X5=5 2X5=10 3X5=15 4X5=20 5X5=25
1X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=36
1X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=49
1X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=64
1X9=9 2X9=18 3X9=27 4X9=36 5X9=45 6X9=54 7X9=63 8X9=72 9X9=81
if __FILE__ == $0
# TODO Generated stub
i=1
while i<5 do
if(i==5)
i+=1
redo
end
puts i.to_s
i+=1
end
end
输出:
1
2
3
4
View Code
To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.