如何在Swift中将类型作为函数参数传递?

时间:2015-06-27 06:13:45

标签: swift generics ios8 type-alias

是否可以在Swift中传递typealias作为函数参数? 我想做的事情如下: func doSomethingWithType(type: typealias)

2 个答案:

答案 0 :(得分:4)

类型别名只是现有类型的同义词 - 它不会创建新类型,只是创建一个新名称。

也就是说,如果你想将一个类型传递给一个函数,你可以使它成为通用的,并按如下方式定义它:

func doSomething<T>(type: T.Type) {
    println(type)
}

您可以通过传递类型来调用它 - 例如:

doSomething(String.self)

将打印

"Swift.String"

如果为String定义了一个类型,则输出不会改变:

typealias MyString = String
doSomething(MyString.self)

答案 1 :(得分:1)

来自Apple Document

  

类型别名声明引入了现有类型的命名别名   进入你的程序。类型别名声明使用。声明   关键字typealias并具有以下形式:

typealias name = existing type
  

声明类型别名后,可以使用别名   在您的程序中的任何位置的现有类型。现有的类型可以   是命名类型或复合类型。类型别名不会创建新的   类型;它们只是允许名称引用现有类型。

所以你可以像这样使用它:

typealias yourType = String

func doSomethingWithType(type: yourType) {

}