Ruby
- MRI : Ruby官方解釋器
安裝
Linux
sudo apt-get install ruby
基本語法
- irb :進(jìn)入Ruby命令行環(huán)境
- puts和print的區(qū)別是,puts會自動在結(jié)尾加上換行符
- 一切皆為對象芬迄,例如字符串厨疙、數(shù)字都是對象捡硅,有自帶很多的方法橱健,比如:
"Hello Ruby".length "Hello Ruby".reverse
- 嵌套調(diào)用: (字符串先翻轉(zhuǎn)浇揩,再大寫)
"HelloWorld".reverse.upcase
Ruby變量
- 本地變量 (Local Variable) name = "Hello"
- 實(shí)例變量 (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每個(gè)對象都有一個(gè)唯一的ID鸭你,并且提供.object_id方法查看
Ruby Object-Orirnted
-
查看變量對象類型:
變量名.class name = "Heelo World" name.class =>String
-
調(diào)用對象的方法:
變量名.方法名 name.length name.reverse.upcase
Ruby Varivable Method
-
有些方法返回修改的值屈张,有些方法直接修改變量
exam_score = [32,65,51,4,89] //排序方法,沒有"!"不會修改原來數(shù)組的順序 exam_score.sort //一般來說袱巨,Ruby中方法名稱以"!"結(jié)尾的阁谆,都是直接修改原始變量,要謹(jǐn)慎使用 exam_score.sort!
變量可嵌入字符串中
在字符串中愉老,可通過#{變量名}應(yīng)用變量的內(nèi)容场绿,
只能使用在雙引號下
name = "World"
puts "Hello #{name} !"
Ruby 表達(dá)式 - 比較
- = 賦值
- == 比較是否一樣,并且對字符串的大小寫敏感
- (> , < ) 大于小于
- <=> 船型操作符 返回-1或0或1
表達(dá)式組合
可以使用&&或||進(jìn)行變大時(shí)組合(邏輯運(yùn)算)
還提供更自然的寫法:
- && 邏輯與 = and
- || 邏輯或 = or
- 嫉入! 邏輯非 = not
Ruby - 條件判斷
在Ruby中焰盗,除了false和nil外,都被認(rèn)為是true
即使是返回0劝贸,也是為true
if 條件判斷語句
...
end
if 條件判斷語句
...
else
......
end
if 條件判斷語句
...
elsif 條件判斷語句
......
else
...
end
unless 條件判斷語句姨谷,條件為假時(shí),執(zhí)行
...
end
- Ruby Case
day = "Monday"
case day
when "Monday"
puts "Fighting"
when "Friday"
puts "Oh Yeah!"
end
還可以這樣表示:
score = 99
case score
when 1..59 //代表一個(gè)范圍
puts "Try Again"
when 60..79
puts "pass"
when 80..99
puts "Good Job!"
end
Ruby 無盡循環(huán)
按Ctrl + c 強(qiáng)制打斷
loop do
puts "I love Ruby"
end
條件循環(huán)
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數(shù)到10梦湘,還可以引用這個(gè)值count
1.upto(10) do |count|
puts "count to #{count}"
end
//從10數(shù)到1
10.downto(1) do |count|
puts "down to #{count}"
end
//跳著數(shù)2個(gè)
1.step(10,2) do |count|
puts "step to #{count}"
end
Ruby - 方法
- 方法定義及調(diào)用
def 方法名
......
end
#方法定義,以小寫開頭
def say_love
puts "I love Ruby"
end
#方法調(diào)用
say_love
#帶參數(shù)的方法定義
def say_love(name)
puts "I love #{name}"
end
#帶參數(shù)的方法調(diào)用
say_love("Ruby")
def say_love(name,from)
puts "I love #{name},from #{from}"
end
#調(diào)用
say_love("Ruby","Nick")
- Ruby 還可以接受可變長度的參數(shù)
def 方法名(*arg)
......
end
帶變長參數(shù)的方法
def add_all(*num)
sum = 0
#數(shù)組的方法件甥,把輸入的參數(shù)當(dāng)做數(shù)組一個(gè)一個(gè)的賦給num求和
num.each {|x| sum += x}
return sum
end
add_all{1,2,3,4,5}
- Ruby 參數(shù)默認(rèn)值
def 方法名(arg1=默認(rèn)值...)
......
end
帶默認(rèn)參數(shù)的方法
def say_love(name="Ruby")
puts "I love #{name}"
end
調(diào)用
say_love #輸出 I love Ruby
say_love("Nick") #輸出 I love Nick
- Ruby 方法返回值
每個(gè)方法都有一個(gè)返回值
**沒有return 指定返回對象時(shí)捌议,自動返回最后一行代碼結(jié)果**
def add_all(*num)
sum = 0
num.each{ |x| sum += x }
return sum
end
定義一個(gè)空方法
def do_nothing
end
puts do_nothing.class
# 就算是空方法也是會有返回值的,返回nil
# nil也是一個(gè)對象