掌握Ruby世界就要先懂:邏輯判斷與流程控制
邏輯判斷與流程控制
不知道各位有沒有看過這則笑話,你看完今天的內容應該就可以了解這個笑點在哪裡了!
這部分是各家程式語言最常使用也是訓練大家邏輯思考的地方了,許多的運算或是流程進行就必須先懂這部分的操作,今天就讓我們來好好認識 Ruby 的寫法吧!
等號的數量跟判斷有甚麼關係?
- “=” 1 個等號是指定
- “==” 2 個表示比對,會得到 true or false
- “>=” 大於等於
- “<=” 小於等於
- “!=” 驚嘆號出現就是否定,不等於
其實 Ruby 的等號很多時候不是等號!!
Ruby 裡面只有 nil 跟 false 是假的,其他都是真
If 條件判斷 (如果…不然就)
if 是我們條件的設定,後面可以透過 elsif 添加額外得條件,或是 else 直接設定前面的條件之外的條件都算
- 注意: ruby 比較特別的是 elsif 不用寫”e”(英文應為 else if)。
- 注意:if 條件最後面需要加上 end 來表示這個邏輯判斷 block 的結束喔,後續的章節還會特別提到 block,可以先想像成這個區域內,裡面應用到的變數出去後就不能用了喔!
If
單一條件,且符合條件才會執行內容
1 | if weather == "sunny" |
if … else
二分法的方式
1 | if weather == "sunny" |
if…elsif…else (中間的 elsif 可以無限增加,剩餘的條件用 else)
超過三種條件以上可以使用這種類型判斷
1 | age = 10 |
容易搞混的邪惡分身們 evil twins
- unless = if not
- If = unless not
非英文母語的可能會覺得不直觀,所以使用哪種必須考慮程式碼可讀性!!
1 | unless age >=18 |
三元運算子
有些時候會這樣去撰寫,看似精簡,但可讀性比較差。
1 | if age >=18 |
case when
利用這樣可以清楚地列出相關的條件,但其實這些都是 ruby 使用語法糖衣包裝過的 if..else
Ruby 的 Case when 可以用範圍的魔法喔!!
1 | age = 20 |
常見錯誤,一個等號不是等於的判斷
很多新手會以為單個 “=” 可以進行條件判斷,但這樣其實是代表指定。
可以看到下面的範例:
1 | score = 95 |
原本我們預期可以看到 95 分進去條件判斷應該是要印出未滿分,但最後卻印出滿分。是因為 if 那邊應該使用”==”,不然會將 score 指定成 100,然後在 ruby 世界中指定這件事情回傳直就是內容本身,所以判斷後得到 true 就回傳”滿分”了。
以上就是基本的條件判斷在 Ruby 裡面的用法,要好好弄清楚,不管是在任何程式語言中都是相當重要的一環呢!
參考資料:
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Sean's Blog!
評論
GiscusDisqus