Ruby手冊 第一章
♦️ Ruby手冊 第一章
這篇文章中會著重介紹一些Ruby和其他語言的基礎差異
有興趣的話歡迎閱讀喔!
☘️ 變數(variable) 常數(Constant)
種類 | 範例 | 預設值 |
---|---|---|
區域變數 (local variable) | name | 沒有 |
全域變數 (global variable) | $name | nil |
實體變數 (instance variable) | @name | nil |
類別變數 (class variable) | @@name | 沒有 |
⭐️ 實體變數(@):
實體變數只能在類別內部訪問,如果要在外部訪問,需要定義讀寫方法
類別外部存取一個實體變數,可以定義讀寫方法,例如 attr_accessor
☘️判斷:
# if
if a > b:
puts 'a>b'
elsif a = b:
puts 'a=b'
else
puts 'a<b'
end
# unless
unless is_adult?(20)
puts "你是大人了"
end
# 相當於 if not
if not is_adult?(20)
puts "你是大人了"
end
# case
weather = "下雨"
case weather
when "下雨"
puts "待在家!"
when "出太陽"
puts "出去玩!"
else
puts "在家睡覺!"
end
迴圈 迭代(Loop and Iteration):
在 Ruby 的迴圈主要有幾種:
- while 迴圈
- for..in 迴圈
- times, upto, downto 方法
- 迭代(iteration)
在Rails 開發中比較常用到的是第三和第四種
⭐️ times, upto, downto:
5.times do
puts "hello, ruby"
end
# 執行後得到結果:
# hello, ruby
# hello, ruby
# hello, ruby
# hello, ruby
# hello, ruby
1.upto(5) do |i|
puts "hi, ruby #{i}"
end
# 執行後得到結果:
# hi, ruby 1
# hi, ruby 2
# hi, ruby 3
# hi, ruby 4
# hi, ruby 5
5.downto(1) do |i|
puts "hi, ruby #{i}"
end
# 執行後得到結果:
# hi, ruby 5
# hi, ruby 4
# hi, ruby 3
# hi, ruby 2
# hi, ruby 1
⭐️ 迭代(each):
friends = ["eddie", "joanne", "john", "mark"]
friends.each do |friend|
puts friend
end
☘️字串:
字串安插:
除了一般的 + 寫法
Ruby 的字串有提供了字串安插的寫法
name = "Yu"
age = 20
puts "你好,我是 #{name},我今年 #{age} 歲"
# => 印出「你好,我是 Yu,我今年 20 歲」
# 注意!必須是雙引號 單引號沒有這種寫法!
☘️陣列:
增加陣列元素(«):
my_array = [1, 2, 3]
my_array << 4
# my_array 現在為 [1, 2, 3, 4]
☘️字典(Hash):
Hash 有兩種寫法
# 比較舊的寫法
old_hash = {:title => "Ruby", :price => 350}
# 新的寫法類似 JSON 格式
new_hash = {title: "Ruby", price: 350 }
☘️ symbol :
symbol 是一個在ruby中非常特別的東西
而且又非常實用!
我們可以把 symbol 想成是一個「帶有名字的物件」
來看一個例子:
class Order
attr_reader :status
def initialize(items, status = :pending)
@items = items
@status = status
end
def compete
@status = :complete
end
end
order = Order.new(["item A", "item B", "item C"])
if order.status == :pending
puts "order is pending"
end
上面的這段程式中
:pending :complete 都是symbol
代表 pending 跟 complete 這兩個「狀態」
✨symbol 跟變數有什麼不同:
Symbol 是一個「帶有名字的物件
本身不需要指向任何東西也可以拿來用
例如上面的 :pending 跟 :complete 的例子
:name = "Yu" # 這得到 SyntaxError 的錯誤訊息
而且我們無法直接拿 Symbol 來當變數
像這樣會出現語法錯誤
✨symbol 跟字串有什麼不同:
字串是可以修改的
但symbol不行!
而因為symbol不可變的原因
使他在處理上要比字串快非常多
因此如果是不用更改的東西通常會使用symbol來代替字串
例如 Hash 裏的 Key
profile = { name: "Yu", age: 18 }
# 相當於 {:name => "Yu", :age=>18}
第一章就先到這裡啦!
有興趣的讀者歡迎接著看喔!
參考資料:為自己學Ruby on Rails