1. Ruby执行选项
符号 | 作用 |
---|---|
-c | 检查代码正确性 |
-w | 警告模式运行 |
-e | 字面脚本 |
-l | 行模式运行 |
单独
ruby -c Hello.rb
组合
ruby -le 'print "Hello";print "Ruby"'
2. 常量,变量
2.1 常量
通常以首字母大写或全部大写为常量。
CON1=1000
puts "I got"+CON1.to_s+"RMByuan"
CON1=100 #不报错但是给出警告
puts "Now only"+CON1.to_s+"yuan"
2.2 变量
2.2.1 局部变量
在类,模块,方法这些作用域里面有效。下划线_,a-z开头。
2.2.2 全局变量
作用于全局。以$开头
Ruby自带全局变量:
全局变量 | 说明 |
---|---|
$0 | Ruby脚本文件名 |
$* | 命令行参数 |
$= | 是否区分大小写 |
$_ | 最近读的字串 |
3. 数据类型
3.1 数值
两种整形Fixnum,Bignum,一种Float型,数据类型也是对象。用.class
来查看当前变量的数据类型。
i=2**30 #基本数据类型也是一个对象
k=2**30-1
puts "i="+i.to_s+"类型是"+i.class.to_s #.class可以得到该数值的类型
puts "k="+k.to_s+"类型是"+k.class.to_s
f=3.1415
puts "f="+f.to_s+"类型是"+f.class.to_s
i=1073741824类型是Bignum
k=1073741823类型是Fixnum
f=3.1415类型是Float
3.2 范围
用===
来判断右边对象是否在左边对象里面
#..与...的区别
a=1..5
b=1...5
print "a的元素是"
a.each do|i|
print i.to_s
end
puts "\n",a===5
print "b的元素是"
b.each do|i|
print i.to_s
end
puts "\n",b===5
a的元素是12345
true
b的元素是1234
false
常用方法:
方法 | 说明 |
---|---|
to_a |
转换成一个数组 |
include?() 或者 === |
是否包含 |
min() begin() firsst() |
最小值 |
max() end() last() |
最大值 |
常用迭代器
迭代器 | 说明 |
---|---|
regect |
转为数组,删除满足条件元素 |
select |
转为数组,选择满足条件元素 |
each |
输出迭代范围中每个元素 |
其中each最为常用,演示如下
a=1..10
a.each do|i|
print i.to_s+" "
end
1 2 3 4 5 6 7 8 9 10
3.3 符号
符号对象是 字符串,方法,类,或者标识符的内部表示形式。
用:
或者 %{}
创建符号对象
str1="good morning"
sym1=:"good morning"
puts str1==sym1 #比较对象
puts str1.to_sym==sym1 #字符串转成符号后比较内容
puts sym1.to_s==str1 #符号转成字符串后比较内容
false
true
true
4. 运算符
- 基本:求余
%
, 乘方**
其他:+,-,*,/
- 赋值运算:
=,+=,-=,#=,/=,%=,**=
- 位运算符:
位运算符 | 说明 | 位运算符 | 说明 |
---|---|---|---|
& | 按位 与 | << | 向左移位 |
>> | 按位 或 | >> | 向右移位 |
~ | 按位非 | ^ | 异或 |
4. 比较运算
运算符 | 说明 | 运算符 | 说明 |
---|---|---|---|
!= | 不等于 | =~ | 正则表达式匹配 |
<=> | 比较两对象结果1,0,-1 |
!~ | 正则表达式不匹配 |
5. 逻辑运算
逻辑运算符 | 含义 |
---|---|
&& | 逻辑“且” |
|| | 逻辑“或” |
! | 逻辑“非” |
6. 三目运算符
score<600? "仍需努力":"考上复旦没问题"
5. 语句
5.1 if
if(条件) then
代码块
elsif(条件)
代码块
else
代码块
end
if
对应的是elsif
而不是elseif.
可以省略then
关键字
unless与if相反,unless后面的语句结果是true时执行 第二个代码块,否则执行第一个代码块
unless(条件) then
代码块1
else
代码块2