Swift基礎 — 厲害的 Typealias型別別名

ChunYi LI
One Two Swift
Published in
4 min readJun 30, 2018
Typealias — 課堂上前輩分享了一個好像不起眼,但卻是很厲害的東西。

Typealias

Type + Alias 查了一下 google 翻譯得知 Alias有別名、綽號的意思。姑且叫他型別別名。

顧名思義的這個 Typealias 可以用來重新命名一個型別。舉例來說,可以用來幫 String 、 Double 、 CGPoint 重新命名。

那為何會需要幫這些東西命名呢?由於專案的開發,一個型別會一直被整個專案個處所使用,所以一個型別有可能在同一個專案分別擔任不同的角色。

一般型別

在這個範例,我讓 String 這個很常見的型別有了兩個不同的別名。

一個代表了狗狗的名字,另一個代表了主人的名字。當我們呼叫這個方法的時候,我們就只要帶入兩個字串就可以了。

我想了一下,實務上好像沒有真的必須要使用這個的必要性,就算可以增加程式碼的易讀性,但是 swift 本身的方法就可以放外部名稱,反而外部名稱使用的程式碼更精簡。

如果有讀者有更好的用法或是使用時機可以留言跟我說一下。

Closure With Typealias

我們可以利用別名的特性來幫一個閉包取名字,讓閉包在使用的時候更方便友善。

有使用過 Alert 的開發者都知道 AlertAction 裡面有一個閉包稱作 handler ,它的功用就是讓開法者在裡面擺放使用者在點選該 AlertAction 要做的事情。

在一個專案裡面,我們很有可能會使用多次的 Alert ,但每一次都要重新寫一次 AlertController 還有 AlertAction 是一件相當麻煩的事情,像我這麼懶惰的人就會想要定義一個方法讓我可多次呼叫 Alert 。這時會有個問題產生,每一個 AlertAction 裡面的方法可能都不一樣,在這邊我們可以利用 Closure可以當作型別被傳來傳去的特性來幫 Closure 取名。

以下範例程式

我定義了一個可以建置 Alert 的 function ,而這個方法內的AlertAction 的handler我並沒有寫死,我帶入了一個名為 handler 的閉包。

注意:這裡使用的閉包格式必須跟 function 要求的型別一模一樣。

這種寫法可以讓每個呼叫這個方法的開發者自己定義handler裡面要怎麼使用。

這就是該方法的呼叫式,前面參數要求一個 iewController ,後面緊跟著的就是我們要自己定義的閉包。

閉包展開後就可以依照每個使用時機的不同編寫方法。

結語

越接近課程的尾聲越發理解到了自己的不足,今天所紀錄的 Typealias 雖然只是個小東西,但卻可以幫助整個專案的程式碼更精簡。

一直以來我都非常享受寫出更精簡的程式,寫出容易閱讀、好維護、高效率的程式碼是我作為一個開發者的目標。

好!這就是今天的小紀錄,最近有非常多東西要記錄,但因為我寫文章的速度非常慢,所以沒辦法有很高的產出,但我希望我寫的東西對你也有幫助,如果你喜歡我寫的紀錄可以拍拍手幫我鼓勵一下,如果有寫錯的地方也請指教。

不免俗的還是要跟情歌王子小潘潘打個招呼。嗨~~~

--

--

ChunYi LI
One Two Swift

Hi this is Chunyi-Li from Taiwan, a junior iOS deveoper