2017-01-03 28 views
0

模式的名稱是否由類型由結果類型的上下文推斷?通過方法上下文定義的Swift泛型

例如,在本例中,我可以使用什麼語言來記錄foo方法,並解釋需要爲該方法工作定義類型?

protocol FooType { 
    init() 
} 

func foo<T: FooType>() -> T { 
    return T() 
} 

struct Bar: FooType { 
    init() { 
     print("bar") 
    } 
} 


let bar: Bar = foo() 
// works returns instance of Bar 

let fooType = foo() 
// fails because foo doesn't know what type to use 
+0

代碼註釋並不是要解釋「如何」或「什麼」的代碼。它解釋了「爲什麼」。您不必向快速編程人員解釋Swift,他們讀取您的代碼 – Alexander

回答

2

你不需要記錄這個!

大家說,寫在斯威夫特代碼知道,調用一個泛型函數,它的所有類型參數必須推斷,不能嬌生慣養這樣的:

foo<Bar>() 

人們將看到foo,說:「哦,我需要編譯器來推斷這個泛型參數的類型。「他們會明白這意味着什麼。

+0

+1,我猜如果他們不這樣做,至少編譯器會給出一個有用的信息來指導他們正確的方向。 – MathewS