2015-11-03 49 views
4

考慮下面的代碼...斯威夫特Metatyping不一致

protocol MyProtocol {} 
enum MyEnum: MyProtocol {} 
struct MyStruct: MyProtocol {} 
class MyClass: MyProtocol {} 
func MyFunction(parameter: MyProtocol.Type) -> String { 
    return "Hi" 
} 

爲什麼我有分配變量時要使用.self ...

var variable: MyProtocol.Type = MyStruct.self 

而不是當我傳遞一個作爲元類型一個函數參數?

var result = MyFunction(MyStruct) 
+3

可能是一個編譯器錯誤。看[這個問題](http://stackoverflow.com/q/33447419/77567)。 –

回答

1

它看起來像一個編譯器錯誤。我個人覺得.self應該包含在函數參數中。

但是,一旦Swift的源代碼在今年晚些時候發佈,可能會有更好的解釋。同時您可以提交雷達。

編輯:如果Class.Type是唯一的函數參數,它似乎會降低.self要求。 Swift leave out .self to invoke a function which needs metatype?