iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
0
自我挑戰組

Swift - 來吧!鐵人三十項系列 第 22

Day22:當天的鐵人當天寫 - Set、Closure(1)

前前言

嗨,大家好,我是 Lacie,您現在收看的是 Swift - 來吧!鐵人三十項 系列的第二二篇
在鐵人賽完結後,為保持持續做筆記的習慣
將會在我的 Medium 繼續撰寫文章,若有興趣者可前往觀看。


前言

今天要來學習的東西是集合類型的最後一個 - Set
我也從來沒用過這個東西,故來嘗試看看它有什麼樣的特性及用法
由於 Set 的篇幅可能沒那麼多,故後面會開始學習 Closure


Set

Set is an unordered collection of unique values.

Set 以沒有排序的方式來儲存相同型別的值,且每個值不能重複
換句話說就是,想要確保你的值是絕對不會重複的,或者排序對你的值來說是不重要的,用 Set 就對了

創建一個 Set 和其他兩個集合類型有點不一樣(雖然其他兩個也是可以這樣創):

在 Set 裡放一些初始值測試看看(重複的值不會跑出來):

想要確認 Set 裡是不是有這個值了,可以這樣做:

加入新的值可以使用 insert(由於沒有排序,所以不用指定位置):

想要除掉 Set 裡的值,可以使用 remove:


Set 與 Set 之間的比較

兩個 Set 之間如果有相同的值,可以使用 intersection 來找出它們並存進一個新的 Set:

相反的,也可以找出它們兩個都沒有共通的值並存進一個新的 Set:

把兩個 Set 有的值通通放進來並存進一個新的 Set(重複的依然只會有一個):

把 Set2 有的值通通塞進 Set1 裡(Set2 不會改變):


Closure 閉包

之前在使用閉包時,最常用的是 Alert 裡頭按下 Button 後要執行的事情
只知道我把程式碼放在 handler: {} 裡頭後,它會幫我做事
但 Closure 好像有非常多種不一樣的用法,故藉這次機會,來好好補補基礎


Closure 基礎學習

Closure 就像沒有名字的 function,由於以前篇章學習過如何創建一個乘法的 function,今天來嘗試使用 Closure 實現乘法

可以帶入參數的 Closure(in 後面為 Closure 要執行的程式碼):

如果前面已經定義了,後面也可以不需要寫參數型別及回傳型別,它會自動推論:

如果程式碼只有一行,也可以不用寫 return:

如果你覺得命名參數麻煩,也可以把它刪掉(包含 in),使用 $0、$1 來代替:

然後,我們下集見。


上一篇
Day21:當天的鐵人當天寫 - Dictionary
下一篇
Day23:當天的鐵人當天寫 - 根據系統時間顯示不同啟動畫面
系列文
Swift - 來吧!鐵人三十項30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言