【问题标题】:How can I pass a typealias as a function parameter in Swift?如何在 Swift 中将类型别名作为函数参数传递?
【发布时间】:2015-06-27 06:13:44
【问题描述】:

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

【问题讨论】:

  • 你能澄清一下吗?您要传递该类型还是该类型的对象?

标签: swift generics ios8 type-alias


【解决方案1】:

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

也就是说,如果你想将一个类型传递给一个函数,你可以让它泛型,并定义如下:

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

你可以通过传递一个类型来调用它——例如:

doSomething(String.self)

将打印出来

"Swift.String"

如果您为 String 定义类型别名,但输出不会改变:

typealias MyString = String
doSomething(MyString.self)

【讨论】:

  • 太棒了!感谢那。这与我试图做的事情一致。我的问题是我在函数调用中使用的库现在接收泛型作为参数就好了,需要一个显式类型:Mapper&lt;type&gt;().map(item) 不起作用。
【解决方案2】:

来自Apple Document

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

typealias name = existing type

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

所以你可以这样使用它:

typealias yourType = String

func doSomethingWithType(type: yourType) {

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 2016-02-16
    相关资源
    最近更新 更多