iT邦幫忙

0

IOS Swift 簡寫Closure,我也能做到嗎?

前言:

本來要睡了但感覺今天過得太廢了所以懲罰自己再打一篇,明天要去自己最喜歡的導演開設的酒吧參加活動,超級期待的拉,雖然他的podcast目前結束要進行下一個階段,但還是想介紹給大家對於社會新鮮人、快要出社會的人都非常有幫助,甚至可以說這是對我人生最為重要的podcast,它叫 <那些你不敢跟老闆說的事> 真的很棒推薦給大家。
https://ithelp.ithome.com.tw/upload/images/20210423/20136753xvJGYRA04F.jpg


話說

話說上次講到Closure的時候,我相信很多人剛開始學時一定會和我一樣矇,想說這到底是三小,這陋陋長的東西感覺就沒這麼好用,而且真的好長跟我的..比的話^^,我們先默哀三秒。好我們繼續...

簡短拉幹

確實Closure是有一些撇部可以簡短的,如此一來看起來也會比教清楚明瞭。

開始吧

一樣我們先說明步驟
1.若已經知道參數及回傳值的型別的話,則可以刪除closure內參數及回傳值的型別
2.若程式碼只有一行的情況下可以省略return,因為此時系統會幫你預設return
3.可以利用$0、$1、$2..,代替進去的參數名稱

看無拉

我知道!所以我要開始介紹了。
我們一樣先寫一個func

func addtion(num1:Int,num2:Int) -> Int{
    return num1 + num2
}

addtion(num1: 1, num2: 1)
// 2

然後我們把它轉換為Closure,並把他加到變數內

let addtion:(Int,Int)->Int = { (num1:Int, num2:Int) -> Int in
    return num1 + num2
}

addtion(1, 1)
// 2

簡寫囉

1.若已經知道參數及回傳值的型別的話,則可以刪除closure內參數及回傳值的型別。

我們已經知道了closure的型別為傳入兩個整數後會回傳一個整數,所以我們可以先將closure內參數刪除

let addtion:(Int,Int)->Int = { (num1, num2)  in
   return num1 + num2
}

2.若程式碼只有一行的情況下可以省略return,因為此時系統會幫你預設return。

沒錯你只有看到一行,所以省略return吧

let addtion:(Int,Int)->Int = { (num1, num2)  in
 num1 + num2
}

3.可以利用$0、$1、$2..,代替進去的參數名稱。

記得是從$0依序代替喔

let addtion:(Int,Int)->Int = { 
   $0 + $1
}

$0是第一個參數,$1是第二個參數所以可以省略num1, num2了。

此時執行

addtion(1, 1)
//2

結果會是一樣的。
好的各位我真的要去睡覺了,祝我明天好運吧。


尚未有邦友留言

立即登入留言