加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift全局变量定义与使用

发布时间:2020-12-14 07:03:59 所属栏目:百科 来源:网络整理
导读:转自:http://imtx.me/archives/1916.html 半年前在第一时间接触 Swift,还参与过一次主题演讲(见《和 Swift 亲密接触的这半个月…》)不过很快这股新鲜劲过后就中断了。事隔几月,因为最近正在抓紧时间完成我的那个用 Swift 写的微博客户端,于是我又开始

转自:http://imtx.me/archives/1916.html


半年前在第一时间接触 Swift,还参与过一次主题演讲(见《和 Swift 亲密接触的这半个月…》)不过很快这股新鲜劲过后就中断了。事隔几月,因为最近正在抓紧时间完成我的那个用 Swift 写的微博客户端,于是我又开始好好的学习和使用 Swift 了。

正所谓掌握一样技术最好的办法就是用它来做一个东西,于是这段时间的实战让我对 Swift 的理解更深了一层,也积累了一些使用技巧。今天就分享一则:如何正确地定义一个类变量(和类常量)。

Swift 语言对于无论是静态语言过来还是动态语言过来的开发者来说,都有点点不适应,很多问题的解决思路不能用已经习以为常的方法去做。比如一个很常用的:如何定义类变量(和类常量)?

Swift 支持用 class func 来修饰一个「类方法」,然而却不能用「class var」和「class let」来指定类变量和类常量,一旦你尝试这样做了,那么 Xcode 会提示你:Class variable not yet supported。真是遗憾…

不过从这个提示可以看出,Class variable 的支持只是时间问题。那么现阶段我们要怎么完成这一目标?总不能用丑陋的 Workaround 吧。办法还是有的,我从 Apple 官方的例子中学到了如何去定义一个类级的常量和变量,那就是用 struct。

来个 demo 你就明白了:

class MyClass { 
     struct Constants { 
         static let name = "MyClass" 
     } 
     Variables var age = 0 
     } 
 }

然后在调用的时候,就可以这样来调用: MyClass.Constants.name 和MyClass.Variables.age

虽然中间还隔了一层 Constants 和 Variables,但是我觉得这样也挺好,相当于有了一个 Prefix,直接看代码时就知道是常量还是变量了。如果你不喜欢这种方式,也可以用 computed property 的形式来模拟真实的类变量(常量)的调用。比如:

extension { class var name: String { get { return Constants.name } } ageInt { { Variablesage } set { = newValue 定义了这种方式后,就可以直接用 MyClass.name 和 MyClass.age 来访问类常量或修改类变量了。

这种方式在语法上兼容了未来会得到支持的类变量和类常量,但就是自己要写一大堆 getter 和 setter,有点麻烦,大家可以根据自己的需要决定是不是要采用这种方式。

关于本文的 demo 代码,大家可以粘贴进「swift」这个命令行工具来实践一下。效果正如我们想要的那样,常量不允许修改,变量可以修改,所有的这些操作都是在 MyClass 上进行,而不需要实例化。

虽然现在用 Swift 来做一些常用的任务还略显麻烦,不过作为一个年轻的语言,目前它确实已经能用在生产环境中写出真正可用的 App 了,随着接下去的发展,我相信它会变得越来越好的。

PS:现在我只想 SourceKitService 崩溃的少一点…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读