Swift Review#10[條件運算-guard…else]補充:三元運算子termary operator

影山小麥機
Jun 28, 2021

前言

條件運算這件事情,除了基本型的if…else,還有一種,叫做guard…else,誠如上一篇簡短的描述:

guard…else 如其名,像個守衛,如果你符合它守護的原則,那麼你所提的條件就會被它接納,否,則被踢除,端看else後的條件是什麼,產出產物。

guard的邏輯是某條件為真不然就是某條件為假,產出兩種結果。

if…else則是可以包含多重條件的前提,然後進行篩選,和guard比較的話,會有一種感覺是:guard比較單純,就是符合條件不符合條件兩者。

總之,guard在操作上有點像個守衛,你是好人,就讓你進來,你是壞人,就掰掰。

正文

稍微描述一下上面的邏輯:

guard…else的運作邏輯,是會先描述「不符合條件裡的話,會發生什麼事情」,然後再描述「如果符合邏輯的話,會有什麼結果」

那,既然有if…else,為什麼還要有guard…else這個條件運算的邏輯存在呢?

使用guard…else的優勢

這裡我想套用之前在網路上看到彼得潘對guard…else的描述

  1. 可讀性佳
  2. 不用浪費時間讀取不需要的程式碼

大概在這裡可以重新描述他在第一點裡提到的:if…else通常會把所有條件論述一遍,最後才產出結果,而guard…else只有執行一回合的程式語言,如果執行如果為否,則立馬產出結果。

可讀性這件事情,大抵可以說大家都知道guard是只要暸解一個條件,就會產出兩個結果,且一翻兩瞪眼的邏輯,所以不用if…else這要查看很多邏輯條件啊!

補充:三元運算子(termary operator)

如果你對上一篇的if…else算是熟悉,你可以大概的知道if…else的程式邏輯是一個區塊又一個區塊的,而在這裡,三元運算子提供了一個更簡便的寫法:

原先的if…else大概會讓程式語言的呈現變成下面這樣

如果換成三元運算子的邏輯下去寫:

公式大概如下:

「條件」?「符合條件的結果」:「不符合條件的結果」

或者套用Syashin Chen的說法更為簡單:

公式: a ? b : c,條件 a 為 True ,回傳 b。條件 a 為 false ,回傳 c

打印出來的結果都是一樣的:

小記:在學習guard…else的過程有點模糊,後來經過這一次複習才比較暸解它的運作模式,三元運算子也算是重新好好的複習過一遍,所以這次應該會有蠻好的收穫了。

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

影山小麥機
影山小麥機

Written by 影山小麥機

本職為Mobile工程師,熱愛分享視野,也樂意站在ChatGPT的肩膀上。訂閱小麥機,收割技術、職涯、人生的難題。

No responses yet

Write a response