【发布时间】:2015-06-27 06:13:44
【问题描述】:
是否可以在 Swift 中将 typealias 作为函数参数传递?
我想做类似的事情:
func doSomethingWithType(type: typealias)
【问题讨论】:
-
你能澄清一下吗?您要传递该类型还是该类型的对象?
标签: swift generics ios8 type-alias
是否可以在 Swift 中将 typealias 作为函数参数传递?
我想做类似的事情:
func doSomethingWithType(type: typealias)
【问题讨论】:
标签: swift generics ios8 type-alias
类型别名只是现有类型的同义词 - 它不会创建新类型,它只是创建一个新名称。
也就是说,如果你想将一个类型传递给一个函数,你可以让它泛型,并定义如下:
func doSomething<T>(type: T.Type) {
println(type)
}
你可以通过传递一个类型来调用它——例如:
doSomething(String.self)
将打印出来
"Swift.String"
如果您为 String 定义类型别名,但输出不会改变:
typealias MyString = String
doSomething(MyString.self)
【讨论】:
Mapper<type>().map(item) 不起作用。
类型别名声明引入了现有类型的命名别名 进入你的程序。类型别名声明使用 关键字 typealias 并具有以下形式:
typealias name = existing type
声明类型别名后,可以使用别名代替 在您的程序中随处可见的现有类型。现有类型可以 是命名类型或复合类型。类型别名不会创建新的 类型;它们只是允许名称引用现有类型。
所以你可以这样使用它:
typealias yourType = String
func doSomethingWithType(type: yourType) {
}
【讨论】: