每種語言都有自己處理布林值的方式,Ruby 也有自己的處理邏輯,要釐清何者為真、何者為偽的規則非常簡單,在 Ruby ,除了 false 和 nil ,其他所有的值都是真。 - Effective Ruby
nil
跟 false
都是物件,有自己的類別。想像用一個存在的東西來表示一個不存在的東西, Ruby 用 nil
來表示「空的」、「不存在」的概念。且 Ruby 跟其他語言有些不同,這裡的 0
是 true
。
nil.class # 印出 NilClass
nil.nil? # 印出 true
0 == nil? # 印出 false
if
、unless
、case
==
、>
、<
、=!
=
是指定、兩個 ==
是比較、三個 ===
是判斷true
或 false
在 Ruby 裡的 else if
是寫成 elsif
,沒寫對會出現文法錯誤。
狗派或貓派 = "選擇障礙"
if 狗派或貓派 == "貓貓"
puts "最喜歡貓貓了"
elsif 狗派或貓派 == "狗狗"
puts "最喜歡狗狗了"
else
puts "小孩子才做選擇"
end
# 印出 小孩子才做選擇
如果只有 if else:
age = 18
puts age >= 18 ? "你是大人了" : "快點長大吧"
如果很多 elsif:
weekday = "禮拜二"
case weekday
when "禮拜一"
puts "忙day..."
when "禮拜二"
puts "求死day..."
when "禮拜三"
puts "未死day..."
when "禮拜四"
puts "受死day..."
when "禮拜五"
puts "福來day!"
when "禮拜六"
puts "灑脫day!"
else
puts "傷day..."
end
# 印出 求死day...
def is_odd(n)
(n % 2 == 1) ? true : false
end
is_odd 3 # 印出 true
(1..10).select {|num| num % 2 == 1} # 印出 [1, 3, 5, 7, 9]
def vote
if user_signed_in?
log = current_user.vote_logs.new(candidate: @candidate,
ip_address: request.remote_ip)
if log.save
message = "投票成功"
else
message = log.errors.full_messages.first
end
redirect_to root_path, notice: message
else
redirect_to root_path, notice: '請先登入會員!'
end
end
參考資料:
為你自己學 Ruby on Rails
此文同步刊登於CJ-Han的網站