• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

swift之namespace

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

场景: 

项目中类名过长,造成不能根据文件名区分出来,并且如果一个模块的类较多时,很难取一个比较优雅的名字。为了使模块名可读, 我们一般的做法就是添加模块前缀。但是如果模块中还有个子模块,如果还继续按这种方法的话,这个文件名就会特别的长。

1. 一级 (Me Module)

MeMainController  

MeEditController  MeAboutController

2. 两级(Me > Profile Module)

MeProfileChangePasswordController

MeProfileChangeAvatorController

这个时候文件的名字太长就不优雅,想想我们取这么长名字的初衷,无非就是想达到项目中类名 唯一,可读 不冲突的

 

NameSpace

swift 的namespace ,学过c++, php 的都知道,跟他们的很不一样. Swift 的命名空间是基于 module

而不是在代码中显式地指明,每个 module 代表了 Swift 中的一个命名空间。也就是说,同一个 target 里的类型名称

还是不能相同的。在我们进行 app 开发时,默认添加到 app 的主 target 的内容都是处于同一个命名空间中.

  1. 不同target, 这里就不在这里累赘,请参考我下面的参考>命名空间有详细的解释

2. 在通一个项目中,我么如何达到这种namespace的效果  

//1. 用struct 包含
//
struct PackageOne {
} extension PackageOne { class Class { var name: String init(name: String) { self.name = name } } } print("\(PackageOne.Class.self)") let tmp = PackageOne.Class(name: "hell") print(tmp) // 用class包含 class TestClass { } extension TestClass { class MyClass { var name: String init(name: String){ self.name = name } } } let test = TestClass.MyClass(name: "Test") print(test)

 从上面的代码中,启发我们在项目中的具体应用:

1. 对于View

// 项目中运用: 
struct MeModule {
    struct Views{}
    struct ViewControllers{}
}

// 这是一个View
extension MeModule.Views {
    class Edit: UIView{
    
        
        
    }
}

extension MeModule.Views {
    class Update: UIView {
        
    }
}

 2. 对于ViewController 

// 这是一个Controller
extension MeModule.ViewControllers {
    class Edit: UIViewController {
        
    
    }
}

extension MeModule.ViewControllers {
    class Update: UIViewController {
    
    }
    
}

 用naspace使得类名唯一 ,上面的两种情形,对于文件夹的组织 我们就会 

MeModule>Views>Edit> Edit.Swift

MeModule> Views>Update>Update.swift    

MeModule>ViewControllers>Edit>EditController.swift

MeModule>ViewControllers>Update>UpdateController.swift

使得文件唯一。

 

参考:
1. 命名空间

2. how to use Namespace in Swift?

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
[Swift]LeetCode18.四数之和|4Sum发布时间:2022-07-13
下一篇:
swift中用pod安装第三方插件发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap