与静态属性类似,Swift中还定义了静态方法,也称为类型方法,所谓“类型”是指枚举、结构体和类。静态方法定义的方法也是与静态属性类似的,枚举和结构体的静态方法使用的关键字是static,类的静态方法使用的关键字是class。
一、结构体中静态方法
下面我们先看一个结构体静态方法的示例,代码如下:
- struct Account {
- var owner : String = "Tony" //账户名 ①
- static var interestRate : Double = 0.668 //利率 ②
- static func interestBy(amount : Double) -> Double { ③
- return interestRate * amount
- }
- func messageWith (amount : Double) -> String { ④
- var interest = Account.interestBy(amount)
- return "\(self.owner) 的利息是\(interest)"
- }
- }
- //调用静态方法
- println(Account.interestBy(10_000.00)) ⑤
- var myAccount = Account() ⑥
- //调用实例方法
- println(myAccount.messageWith (10_000.00)) ⑦
上述代码是定义Account结构体,第①行代码声明了实例属性owner。第②行代码声明了静态属性interestRate。第③行代码是定义静态方法interestBy,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。
第④行是定义实例方法messageWith,实例方法能访问实例属性和方法,也能访问静态属性和方法。在该方法中我们使用self.owner语句,其中self是一个隐藏属性,指代当前类型实例,一般情况下我们不要使用它,除非属性名与变量或常量名发生冲突。
提示Swift的静态方法中也能使用self,这在其他面向对象的计算机语言中是不允许的。此时self表示当前数据类型,不代表枚举、结构体或类的实例。
二、枚举中静态方法
下面我们再看一个枚举静态方法的示例,代码如下:
- enum Account {
- case 中国银行
- case 中国工商银行
- case 中国建设银行
- case 中国农业银行
- static var interestRate : Double = 0.668 //利率 ①
- static func interestBy(amount : Double) -> Double { ②
- return interestRate * amount
- }
- }
- //调用静态方法
- println(Account.interestBy(10_000.00 )) ③
上述代码是定义Account枚举,第①行代码声明了静态属性interestRate。第②行代码是定义静态方法interestBy,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。第③行代码是调用静态方法。
从示例可以看出,结构体和枚举的静态方法使用定义没有区别。
三、类中静态方法
下面我们再看一个类方法的示例,代码如下:
- class Account {
- var owner : String = "Tony" //账户名
- class func interestBy(amount : Double) -> Double { ①
- return 0.8886 * amount
- }
- }
- //调用静态方法
- println(Account.interestBy(10_000.00 )) ②
上述代码是定义Account类,第①行代码是使用关键字class定义静态方法interestBy,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。第②行代码是调用静态方法。
欢迎关注智捷iOS课堂微信公共平台
相关推荐
用 Swift 编写的工程代码静态分析命令行工具 smck
StroyBoard使用示例主要tableView(静态、动态)、scrollview、collectionView展示
主要给大家介绍了关于如何快速用上Swift静态库的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
欢迎使用Publish,这是专门为Swift开发人员构建的静态网站生成器。 它使整个网站都可以使用Swift构建,并支持主题,插件和大量其他强大的自定义选项。 Publi欢迎使用Publish,这是专门为Swift开发人员构建的静态网站...
用于跨平台静态分析器和linter。 Tailor开箱即支持Swift 3.0.1,并帮助实施 , , 和样式指南中样式指南。 它支持跨平台使用,可以通过外壳在Mac OS X上运行,也可以与Xcode集成在一起,也可以在Linux和Windows上...
Swift中适用于iOS的简单静态表格视图。 静态的目标是将模型数据与表示分离。 Row s Row和Section s Section是您单元格的“视图模型”。 您只需指定要使用的单元格类即可处理所有演示文稿。 有关详细信息,请参见下面...
用Swift编写的静态网站生成器,可让您为商品提供自己的元数据类型。 Saga使用了可扩展的阅读器,编写器和渲染器系统,支持诸如Atom提要,分页和强类型HTML模板之类的内容。 Saga至少需要Swift 5.2,并且可以在Mac...
1)Swift是强类型(静态)语言,有类型推断,Objective-C弱类型(动态)语言 2)Swift面向协议编程,Objective-C面向对象编程 3)Swift注重值类型,Objective-C注重引用类型 4)Swift支持泛型,Objective-C只支持轻...
GLESImageKit 一个OpenGL ES框架,用于处理相机实时滤镜和静态图像滤镜
1)Swift是强类型(静态)语言,有类型推断,Objective-C弱类型(动态)语言 2)Swift面向协议编程,Objective-C面向对象编程 3)Swift注重值类型,Objective-C注重引用类型 4)Swift支持泛型,Objective-C只支持轻...
逆向微信-分析学习微信是如何快速构建静态TableView界面的
首先,在Dependen DIKit的存储属性中声明依赖项,这是Swift的静态类型依赖项注入器。 概述DIKit提供了表示依赖关系图的接口。 名为dikitgen的代码生成器查找接口的实现,并生成满足依赖关系图的代码。 DIKit的主要...
Swift是静态类型的,而Objective-C是动态类型的。 Swift中的变量和常量有什么区别? 变量用var声明,其值可以改变;常量用let声明,其值一旦确定后不可更改。 Swift中的数据类型有哪些? Swift支持多种...
代码分析工具,可以确保代码风格一致并且能避免一些潜在的 bug。
数据类型:Swift是静态类型语言,但您不需要显式地指定每个常量和变量的类型。编译器会根据赋值的值推断出类型。例如,如果您将一个数字值赋给一个变量,那么编译器就会将这个变量的类型推断为Number类型。 控制流...
Kitura,来自IBM的基于Swift的Web框架,也是一个HTTP服务器。特性:URL路由(GET, POST, PUT, DELETE)URL参数静态文件服务支持FastCGI支持SSL/TLSJSON解析可插拔的中间件 标签:Kitura
StackViewController 方便 iOS 开发者使用 UIStackView 构建表单或其它静态内容视图
1.基于swift,结合uiview 2.编写一个用于商城展示的静态数据App. 3.本项目仅供学习交流使用,不能用作任何形式的商业用途!内容图片来源于网络,如侵犯到相关机构的权益,本人不承担任何后果
Swift Package Manager项目Swift Package Manager是用于管理源代码分发的工具,旨在使共享代码和重用他人代码变得容易。 该工具直接解决了编译和链接Swift软件包,管理依赖关系,版本控制以及支持灵活的分发和协作...
Swift Package Manager静态动态Xcode错误 从Xcode 11.4和Swift 5.2开始,由于以下原因,您可能会遇到有关SPM和编译错误的麻烦: 库代码重复: Swift软件包产品“您的库”通过“您的项目”和“您的小部件”链接为静态...