Swift問題收錄

文章地址:
http://swift.gg/2016/03/09/swift-qa-2016-03-09/

問題一:
Extending Protocols With Default Implementation with Enums crashes Xcode

enum Ability { 
    case Flying
    case Running 
    case Swimming 
    case Hiding
}

//All animals will conform to this
protocol Animal { 
    var name: String { get } 
    var specialAbility: Ability { get }
}

struct Dog: Animal { 
    var name: String 
    var specialAbility: Ability
}

let rex = Dog.init(name: "Rex", specialAbility: .Flying)

// 以下代碼會(huì)crash
extension Animal where Self: Dog { 
    var specialAbility: Ability { return .Running }
 }

總結(jié):where語句的約束條件,不能是一個(gè)具體的類,只能是協(xié)議。

問題二:What does _: mean in Swift?

總結(jié):函數(shù)簽名里每個(gè)冒號(hào)都代表一個(gè)參數(shù),每個(gè)參數(shù)都要有個(gè)外部
參數(shù)名寫在冒號(hào)前面,寫_代表不要外部參數(shù)名。參數(shù)名都是自動(dòng)生
成的,默認(rèn)情況下第一個(gè)參數(shù)不生成外部參數(shù)名。

問題三:swift difference between final var and non-final var | final let and non-final let

總結(jié):final關(guān)鍵字主要用來修飾類和類中的屬性、方法或者下標(biāo)。子
類繼承時(shí),不能重寫父類中帶有final修飾的屬性、方法或下標(biāo)。如果
final修飾的是類,那么此類不能被繼承。

問題四:Swift array of generics

struct Thing<T> {
}

let intThing = Thing<Int>()
let stringThing = Thing<String>()

// 編譯錯(cuò)誤:Cannot convert value of type 'Thing<Int>' to expected type 'Thing'
let things: [Thing] = [intThing, stringThing]

總結(jié):Thing是一個(gè)范型結(jié)構(gòu)題,不能直接使用[Thing]表明一個(gè)數(shù)
組。只能通過Any來符合編譯器的規(guī)則。不過這樣的話,就不能直接
使用Thing里面的方法了,需要轉(zhuǎn)換。

問題五:Parentheses in Function and Closure

func myFunction() -> (()-> Int)
func myFunction1() -> (Void-> Int)
func myFunction2() -> Void-> Int

總結(jié):
* () 和 Void 是一樣的,2種不同的寫法而已??茨阆矚g,Swift 中比較常用 ()。
* -> 操作符是右關(guān)聯(lián)的,也就是說,多個(gè) -> 連接在一起時(shí)候,編譯器優(yōu)先解析右邊的。

所以以上3個(gè)定義是一樣的。第一個(gè)和第二個(gè)雖然加了括號(hào),優(yōu)先處
理最右邊的,但是因?yàn)?>是右關(guān)聯(lián)的,所以加括號(hào)和不加括號(hào)是一
樣的。

這3個(gè)表達(dá)式表示的意思是:定義一個(gè)函數(shù),沒有傳入?yún)?shù),返回一
個(gè)閉包, 閉包的類型是() -> Int
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容