[Day05] 風向自西偏東,些許順風,風力 4 級。。。
海賊王的德雷斯羅薩島篇,如果烏索普沒有擊敗砂糖,其後果是難以預料的,嚴重的話可能會導致全員戰敗,不過要如何順利擊中目標呢?必定要有一番縝密的計算吧?運算子(operator)就是其中不可或缺的概念,一起來了解 Ruby 裡的運算子吧!
比較運算子
顧名思義,比較運算子(Comparison Operators)用於比較符號左右兩邊的東西,經常會被用在流程控制,許多比較運算子和我們在數學課上學到的都一樣:
1 | a < b # 小於 |
等號 ==
前面有介紹過,一個等號 =
是指定變數的值,屬於賦值運算子(Assignment Operators)的一種,譬如:
1 | a = 5 |
不過,兩個等號 ==
就是比較運算子的一種了,我們會用它比較兩個元素是否相等:
1 | a = 5 |
至於三個等號 ===
,目前我還沒有很清楚,只知道可以用來呼叫 Proc,與 ==
比較的東西也不太一樣,之後有好的例子會再介紹它!
邏輯運算子
邏輯運算子(Logical Operators)常見的有 &&
、 ||
、 !
效果等同於and
、or
、 not
,不過符號有較高的優先權(precedence),話不多說我們直接看 code:
1 | a = 3 |
&&
是用來確認一串條件判斷式之中是否有false
或nil
,只有全部為true
,才會通過條件判斷。a || b
:a
和b
其中一個成立即可,同時若a
為true
就不用判斷b
;如果a
是false
才會判斷b
!a
:不是a
為了讓初學 Ruby 的朋友可以看懂下面的例子,在這邊我決定先偷跑一下,在 Ruby 裡的流程判斷會這樣寫:
1 | if #假設一個條件 => 可能會得到 true 或 false |
好的,我看在座的各位骨骼清奇,根骨極佳,應該都是百年難得一遇的練武奇才,想必就算看不懂我在寫什麼也能迅速了解概念,接著馬上來看看 &&
的實際例子:
A &&
B
1 | a = 0 |
由於 a == 1
就已經是 false
,所以 &&
那行的結果為 false
,因此會走另一條路,最終印出了 false
。
如果重新指定 a
和 b
的值,再執行一次判斷式的話:
1 | a = 1 |
就會印出 "True"
了!
A ||=
B
如果在 Ruby 裡看到某個變數後面寫 ||=
,就表示:當變數是 nil
或 false
時,就把這個變數指定為 =
後面的值。
直接看 code 可能更清楚:
當 a
有值的情況:
1 | a = 1 |
當 a
是 false
的情況:
1 | a = false |
算術運算子
另外還有一些比較特殊的:算術運算子(Arithmetic Operators),像是 +
、-
、*
、%
這些常見的算術符號,在 Ruby 裡,他們同時也是方法(method)的一種!
1 | 4 + 2 => 6 # 加法 |
在 Ruby 裡如果要呼叫方法,會寫:
物件
+ .
+ 某個方法
所以上面那幾行實際上長這樣:
1 | 4.+(2) |
可以看到這些算術符號其實都是被 4
所呼叫的方法,而 2
則是帶入的參數,Ruby 的方法還有其他更神奇的地方!過幾天會跟大家介紹!
另外關於 Ruby 的物件,後面也會有獨立一篇詳細介紹(一直在挖坑)
運算子的優先權
要特別注意的是,在使用上如果是較複雜的情況時,不同的運算子之間會有優先權大小的差異,優先權的順序建議直接查閱文件,以免得到錯誤的結果。
參考資料: Ruby Operators
見聞色霸氣是不是覺醒了呢?
如果還沒的話,下篇會繼續說明流程控制的內容,明天見!