Ruby
- MRI : Ruby官方解释器
安装
Linux
sudo apt-get install ruby
基本语法
- irb :进入Ruby命令行环境
- puts和print的区别是,puts会自动在结尾加上换行符
- 一切皆为对象,例如字符串、数字都是对象,有自带很多的方法,比如:
"Hello Ruby".length "Hello Ruby".reverse
- 嵌套调用: (字符串先翻转,再大写)
"HelloWorld".reverse.upcase
Ruby变量
- 本地变量 (Local Variable) name = "Hello"
- 实例变量 (Instance Variable) @age = 29
- 全局变量 (Global Variable) $app_path = "/usr/local/"
- 常量 (Constant) VERSION = "v1.0"
Ruby Data Types
-
String :
string_name = "Hello Ruby"
-
Number :
num_age = 23
-
Array :
array_sore = [12,52,89,45]
-
Boolean :
boolean_is_pass = true
-
Hashes :
hash_user = {:name => "nick", :age => 23} //查找 => hash_user[:name] => nick
-
Symbols(符号) :
//保存的也是字符串,但通常是不变的字符串,比如hash中的key,一般value变但key不变,如上的:name :name
Ruby每个对象都有一个唯一的ID,并且提供.object_id方法查看
Ruby Object-Orirnted
-
查看变量对象类型:
变量名.class name = "Heelo World" name.class =>String
-
调用对象的方法:
变量名.方法名 name.length name.reverse.upcase
Ruby Varivable Method
-
有些方法返回修改的值,有些方法直接修改变量
exam_score = [32,65,51,4,89] //排序方法,没有"!"不会修改原来数组的顺序 exam_score.sort //一般来说,Ruby中方法名称以"!"结尾的,都是直接修改原始变量,要谨慎使用 exam_score.sort!
变量可嵌入字符串中
在字符串中,可通过#{变量名}应用变量的内容,
只能使用在双引号下
name = "World"
puts "Hello #{name} !"
Ruby 表达式 - 比较
- = 赋值
- == 比较是否一样,并且对字符串的大小写敏感
- (> , < ) 大于小于
- <=> 船型操作符 返回-1或0或1
表达式组合
可以使用&&或||进行变大时组合(逻辑运算)
还提供更自然的写法:
- && 逻辑与 = and
- || 逻辑或 = or
- ! 逻辑非 = not
Ruby - 条件判断
在Ruby中,除了false和nil外,都被认为是true
即使是返回0,也是为true
if 条件判断语句
...
end
if 条件判断语句
...
else
......
end
if 条件判断语句
...
elsif 条件判断语句
......
else
...
end
unless 条件判断语句,条件为假时,执行
...
end
- Ruby Case
day = "Monday"
case day
when "Monday"
puts "Fighting"
when "Friday"
puts "Oh Yeah!"
end
还可以这样表示:
score = 99
case score
when 1..59 //代表一个范围
puts "Try Again"
when 60..79
puts "pass"
when 80..99
puts "Good Job!"
end
Ruby 无尽循环
按Ctrl + c 强制打断
loop do
puts "I love Ruby"
end
条件循环
count = 0
loop do
puts "I love Ruby"
count += 1
if count > 10
break;
end
end
count = 0
while count < 10 //判定条件为真,until为假
puts "I love Ruby"
count += 1
end
Ruby更多的迭代器
//从1数到10,还可以引用这个值count
1.upto(10) do |count|
puts "count to #{count}"
end
//从10数到1
10.downto(1) do |count|
puts "down to #{count}"
end
//跳着数2个
1.step(10,2) do |count|
puts "step to #{count}"
end
Ruby - 方法
- 方法定义及调用
def 方法名
......
end
#方法定义,以小写开头
def say_love
puts "I love Ruby"
end
#方法调用
say_love
#带参数的方法定义
def say_love(name)
puts "I love #{name}"
end
#带参数的方法调用
say_love("Ruby")
def say_love(name,from)
puts "I love #{name},from #{from}"
end
#调用
say_love("Ruby","Nick")
- Ruby 还可以接受可变长度的参数
def 方法名(*arg)
......
end
带变长参数的方法
def add_all(*num)
sum = 0
#数组的方法,把输入的参数当做数组一个一个的赋给num求和
num.each {|x| sum += x}
return sum
end
add_all{1,2,3,4,5}
- Ruby 参数默认值
def 方法名(arg1=默认值...)
......
end
带默认参数的方法
def say_love(name="Ruby")
puts "I love #{name}"
end
调用
say_love #输出 I love Ruby
say_love("Nick") #输出 I love Nick
- Ruby 方法返回值
每个方法都有一个返回值
**没有return 指定返回对象时,自动返回最后一行代码结果**
def add_all(*num)
sum = 0
num.each{ |x| sum += x }
return sum
end
定义一个空方法
def do_nothing
end
puts do_nothing.class
# 就算是空方法也是会有返回值的,返回nil
# nil也是一个对象
网友评论