安裝 Ruby
• Windows
RubyInstaller for Windows
• Linux (Ubuntu)
• Linux (CentOS)
• Mac OS X
• 更多參考 https://www.ruby-lang.org/zh_tw/documentation/installation/
$ sudo apt-get install ruby
$ sudo yum install ruby
$ brew install ruby
5
6.
簡單示範
• 計算階乘
# 計算出數字的階乘
#請把程式儲存為 fact.rb
def fact(n)
if n == 0
1
else
n * fact(n-1)
end
end
puts fact(ARGV[0].to_i)
6
控制結構
• case
i=8
case i
when1, 2..5
puts "1..5"
when 6..10
puts "6..10"
when 'aaa', 'bbb'
puts "aaa or bbb"
when /def/ # 正規表示式
puts "includes /def/"
end
22
23.
控制結構
• while
i =0
while i < 3
puts i += 1
end
# 可以簡寫成
puts i += 1 while i < 3
23
24.
控制結構
• if
i =0
if i == 0
puts "It's zero."
end
# 可以簡寫成
puts "It's zero" if i == 0
24
25.
控制結構
• unless: if的否定型
• until: while 的否定型
• 何時用 if,何時用 unless?
一般來說,儘量使用正向表達,少用 ! 符號
# Good
puts "It's nil" if foo.nil?
puts "It's not nil" unless foo.nil?
# Not good
puts "It's not nil" if !foo.nil?
25
26.
控制結構
• 中斷迴圈
break:中斷所有迴圈
next: 中斷目前迴圈,從下個迴圈開始
redo: 重新執行目前迴圈
return: 中斷迴圈並跳出迴圈所在的方法
• for
for num in (4..6)
puts num
end
for elt in [100, -9.6, "pickle"]
puts elt
end
26
27.
控制結構
• for 的另一種寫法
#如果你習慣用 C 或 Java,你可能會比較喜歡這個。
for element in collection
...
end
# Smalltalk 程式員則可能喜歡這個。
collection.each { |element|
...
}
collection.each do |element|
...
end
27
28.
迭代器 (Iterator)
• 字串常用的迭代器
each_byte: 取出每個字元
each_line: 取出每一行
• 定義迭代器:
在 function 使用 yield ,該 function 就變成迭代器。
yield 可將控制移至傳遞往迭代器的程式碼區塊 (block of code)。
def repeat(num)
while num > 0
yield
num -= 1
end
end
repeat(3) { puts "foo" }
28