iT邦幫忙

2023 iThome 鐵人賽

DAY 26
0
自我挑戰組

入坑 RoR 必讀 - Ruby 物件導向設計實踐系列 第 26

Day26 Ruby物件導向實踐- 運算符

  • 分享至 

  • xImage
  •  

Ruby 支援一套豐富的運算符。大多數運算符實際上是方法的呼叫,運算符是所有算符的總稱,其底下又可以細分為算術運算符、比較運算符、邏輯運算符….等,文章只會紀錄幾個常用的運算符與特殊規則。

算術運算符

假設變數 a = 10, b = 3(前四個用法較常見,因此省略)

運算符 描述 舉例
+ 加法
_ 減法
* 乘法
/ 除法
% 餘數 a%b 得到 1
** 指數 a**b 得到 1000

比較運算符

假設變數 a = 10, b = 20

運算符 描述 舉例
== 檢查兩數值是否相等,相等回傳 true (a == b) 不會回傳 true
! = 檢查兩數值是否相等,不相等回傳 true (a != b) 回傳 true.
> 檢查左數值是否大於右數值,大於回傳 true (a > b) 不會回傳 true.
< 檢查左數值是否小於右數值,小於回傳 true (a < b) 回傳 true.
> = 檢查左數值是否大於等於右數值,大於回傳 true (a >= b) 不會回傳 true.
< = 檢查左數值是否小於等於右數值,小於回傳 true (a <= b) 回傳 true.
< = > 第1個操作數等於第2個運算元則傳回 0;第1個運算元大於第2個運算元則回傳 1;第1個運算元小於第2個運算元則回傳 -1 (a <=> b) 回傳 -1.
=== case 語句的 when 子句內的條件相等,回傳true (1...10) === 5 回傳 true
.eql? 接收者和参数具有相同的類型和值,回傳 true 1 == 1.0 returns true, but 1.eql?(1.0) is false.
equal? 接收者和參數具有相同的物件 ID,回傳 true。 如果 aObj 是 bObj 的 copy,aObj == bObj 回傳 true;a.equal?bObj 回傳 false;a.equal?aObj 回傳 true

邏輯運算符

運算符 描述 舉例
and 檢查兩數值是否為真,兩數值皆為真,回傳true (a and b) 回傳 true.
or 檢查兩數值任一不為真,任一數值為真,回傳 true (a or b) 回傳 true.
&& 檢查兩數值是否為真,兩數值皆為真,回傳true (a&& b) 回傳 true.
|| 檢查兩數值任一不為真,任一數值為真,回傳 true (a || b) 回傳 true.
! 逆轉操作時的邏輯狀態。如果條件為真則使其為假。 !(a && b) 回傳 false
not 逆轉操作時的邏輯狀態。如果條件為真則使其為假。 not(a && b) 回傳 false

可以使用符號(&&, ||, !)或文字(and, or, not),但符號有較高的優先權(precedence)

補充

當 and 遇上 =

def trip_schedule?(trip1 = nil, trip2 = nil)
 @my_trip = trip1 and trip2
end

trip_schedule?('Europe', 'America' ) # => "租借女友" 
@my_trip # => "Europe" 

trip_schedule?('Europe') # => nil 
@my_trip # => "Europe" 

由於優先權大於and,所以兩個都只會印出"Europe"

參考資料:


上一篇
Day25 Ruby物件導向實踐-block, proc, lambda
下一篇
Day27 Ruby物件導向與實踐-*與**
系列文
入坑 RoR 必讀 - Ruby 物件導向設計實踐30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言