欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Swift中的可變參數(shù)函數(shù)介紹

 更新時(shí)間:2015年01月09日 12:58:49   投稿:junjie  
這篇文章主要介紹了Swift中的可變參數(shù)函數(shù)介紹,本文實(shí)現(xiàn)了和Objective-C調(diào)用方法一樣的變參數(shù)函數(shù),需要的朋友可以參考下

可變參數(shù)函數(shù)指的是可以接受任意多個(gè)參數(shù)的函數(shù),我們最熟悉的可能就是 NSString 的 -stringWithFormat:方法了。在 Objective-C 中,我們使用這個(gè)方法生成字符串的寫法是這樣的:

復(fù)制代碼 代碼如下:

NSString *name = @"Tom";
NSDate *date = [NSDate date];
NSString *string = [NSString stringWithFormat:
                @"Hello %@. Date: %@", name, date];

這個(gè)方法中的參數(shù)是可以任意變化的,參數(shù)的第一項(xiàng)是需要格式化的字符串,后面的參數(shù)都是向第一個(gè)參數(shù)中填空。在這里我們不再詳細(xì)描述 Objective-C 中可變參數(shù)函數(shù)的寫法 (畢竟這是一本 Swift 的書),但是我相信絕大多數(shù)即使有著幾年 Objective-C 經(jīng)驗(yàn)的讀者,也很難在不查閱資料的前提下正確寫出一個(gè)接受可變參數(shù)的函數(shù)。

但是這一切在Swift中得到了前所未有的簡化?,F(xiàn)在,寫一個(gè)可變參數(shù)的函數(shù)只需要在聲明參數(shù)時(shí)在類型后面加上 ... 就可以了。比如下面就聲明了一個(gè)接受可變參數(shù)的 Int 累加函數(shù):

復(fù)制代碼 代碼如下:

func sum(input: Int...) -> Int {
    //...
}

輸入的 input 在函數(shù)體內(nèi)部將被作為數(shù)組 [Int] 來使用,讓我們來完成上面的方法吧。當(dāng)然你可以用傳統(tǒng)的 for...in 做累加,但是這里我們選擇了一種看起來更 Swift的方式:
復(fù)制代碼 代碼如下:

func sum(input: Int...) -> Int {
    return input.reduce(0, combine: +)
}

println(sum(1,2,3,4,5))
// 輸出:15


在使用可變參數(shù)時(shí)需要注意的是可變參數(shù)只能作為方法中的最后一個(gè)參數(shù)來使用,而不能先聲明一個(gè)可變參數(shù),然后再聲明其他參數(shù)。這是很容易理解的,因?yàn)榫幾g器將不知道輸入的參數(shù)應(yīng)該從哪里截?cái)?。另外,在一個(gè)方法中,最多只能有一組可變參數(shù)。

一個(gè)比較惱人的限制是可變參數(shù)都必須是同一種類型的,當(dāng)我們想要同時(shí)傳入多個(gè)類型的參數(shù)時(shí)就需要做一些變通。比如最開始提到的-stringWithFormat:方法??勺儏?shù)列表的第一個(gè)元素是等待格式化的字符串,在 Swift 中這會(huì)對應(yīng)一個(gè) String 類型,而剩下的參數(shù)應(yīng)該可以是對應(yīng)格式化標(biāo)準(zhǔn)的任意類型。一種解決方法是使用 Any 作為參數(shù)類型,然后對接收到的數(shù)組的首個(gè)元素進(jìn)行特殊處理。不過因?yàn)?Swift 提供了使用下劃線 _ 來作為參數(shù)的外部標(biāo)簽,來使調(diào)用時(shí)不再需要加上參數(shù)名字。我們可以利用這個(gè)特性,在聲明方法是就指定第一個(gè)參數(shù)為一個(gè)字符串,然后跟一個(gè)匿名的參數(shù)列表,這樣在寫起來的時(shí)候就 "好像" 是所有參數(shù)都是在同一個(gè)參數(shù)列表中進(jìn)行的處理,會(huì)好看很多。比如Swift 的 NSString 格式化的聲明就是這樣處理的:

復(fù)制代碼 代碼如下:

extension NSString {
    convenience init(format: NSString, _ args: CVarArgType...)
    //...
}

調(diào)用的時(shí)候就和在 Objective-C 時(shí)幾乎一樣了,非常方便:
復(fù)制代碼 代碼如下:

let name = "Tom"
let date = NSDate()
let string = NSString(format: "Hello %@. Date: %@", name, date)

相關(guān)文章

  • Swift泛型Generics淺析講解

    Swift泛型Generics淺析講解

    泛型代碼讓你能根據(jù)你所定義的要求,寫出可以用于任何類型的靈活的、可復(fù)用的函數(shù)。泛型是 Swift 最強(qiáng)大的特性之一,很多 Swift 標(biāo)準(zhǔn)庫是基于泛型代碼構(gòu)建的
    2022-08-08
  • 深入解析Swift代理模式

    深入解析Swift代理模式

    委托(代理)是一種設(shè)計(jì)模式,它允許類或結(jié)構(gòu)體將一些需要它們負(fù)責(zé)的功能交由(委托)給其他的類型。下面這篇文章主要介紹了Swift代理模式的相關(guān)資料,文章開始先介紹了Objective-C相關(guān)的內(nèi)容,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-03-03
  • 如何利用SwiftUI實(shí)現(xiàn)可縮放的圖片預(yù)覽器

    如何利用SwiftUI實(shí)現(xiàn)可縮放的圖片預(yù)覽器

    這篇文章主要給大家介紹了關(guān)于如何利用SwiftUI實(shí)現(xiàn)可縮放圖片預(yù)覽器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SwiftUI具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Swift自定義UITableViewCell背景色

    Swift自定義UITableViewCell背景色

    這篇文章主要為大家詳細(xì)介紹了Swift自定義UITableViewCell背景色,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解Swift中的下標(biāo)訪問用法

    詳解Swift中的下標(biāo)訪問用法

    在Swift中我們可以用subscript函數(shù)來定義下標(biāo),從而通過下標(biāo)來訪問數(shù)組與字典等數(shù)據(jù)結(jié)構(gòu),這里我們就來詳解Swift中的下標(biāo)訪問用法:
    2016-07-07
  • swift4更新中所遇到的一些問題總結(jié)

    swift4更新中所遇到的一些問題總結(jié)

    這篇文章主要給大家介紹了關(guān)于在swift4更新中所遇到的一些問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • swift實(shí)現(xiàn)自動(dòng)輪播圖效果(UIScrollView+UIPageControl+Timer)

    swift實(shí)現(xiàn)自動(dòng)輪播圖效果(UIScrollView+UIPageControl+Timer)

    這篇文章主要為大家詳細(xì)介紹了swift實(shí)現(xiàn)自動(dòng)輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Swift的74個(gè)常用內(nèi)置函數(shù)介紹

    Swift的74個(gè)常用內(nèi)置函數(shù)介紹

    這篇文章主要介紹了Swift的74個(gè)常用內(nèi)置函數(shù)介紹,這篇文章列舉出了所有的Swift庫函數(shù),內(nèi)置函數(shù)是指無需引入任何模塊即可以直接使用的函數(shù),需要的朋友可以參考下
    2015-01-01
  • swift4.2實(shí)現(xiàn)新聞首頁導(dǎo)航

    swift4.2實(shí)現(xiàn)新聞首頁導(dǎo)航

    這篇文章主要為大家詳細(xì)介紹了swift4.2實(shí)現(xiàn)新聞首頁導(dǎo)航,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Swift之運(yùn)算符重載示例詳解

    Swift之運(yùn)算符重載示例詳解

    這篇文章主要為大家介紹了Swift之運(yùn)算符重載示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07

最新評論