swift – 是否可以别名导入?

前端之家收集整理的这篇文章主要介绍了swift – 是否可以别名导入?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在c#中引入与现有代码有很多名称冲突的库时,有一种方法可以对导入进行别名,因此您无需为每次使用完全阐明命名空间.例如:
using MyCompany.MyLibrary.Model as MMM

那么你可以做到

MMM.MyObject

代替

MyCompany.MyLibrary.Model.MyObject

随着最近对swift 3.0的更新,我发现我的一些模型对象现在与Foundation类型发生冲突,并且我被迫在类名中使用Foundation.classname为具有NS前缀的东西添加前缀.如果我可以输入别名导入我的模型库就好了,就像上面给出的c#示例一样.这在swift 3.0中是否可行?如果没有,是否有另一种策略可以避免名称冲突导致必须在每种类型前面编写框架名称?我正在考虑像我们在obj-c中那样回到我的班级名称前缀,但是在我这样做之前我正试图探索我的选择.

通常

您可以导入特定实体以及整个模块:

import struct­ SomeModule.SomeStruct
import class­ SomeModule.SomeClass
import func SomeModule.someFunc

请参阅“可导入”实体类型in the import-kind rule of Swift grammar的完整列表.

然后你可以创建一个typealias:

typealias SMSomeStruct = SomeModule.SomeStruct

而且,从Swift 3开始,没有与别名相结合的导入声明.

考虑与基金会实体的冲突

比如说,你有一个SomeModule.NumberFormatter类.

只需在单独的Swift文件(在导入项目中)创建两个typealases就可以防止冲突:

import Foundation
import SomeModule

typealias NumberFormatter = Foundation.NumberFormatter
typealias SMNumberFormatter = SomeModule.NumberFormatter

猜你在找的Swift相关文章