Swift静态方法
来源:互联网 发布:怎么看待网络语言暴力 编辑:程序博客网 时间:2024/05/16 05:49
与静态属性类似,Swift中还定义了静态方法,也称为类型方法,所谓“类型”是指枚举、结构体和类。静态方法定义的方法也是与静态属性类似的,枚举和结构体的静态方法使用的关键字是static,类的静态方法使用的关键字是class。
一、结构体中静态方法
下面我们先看一个结构体静态方法的示例,代码如下:
上述代码是定义Account结构体,第①行代码声明了实例属性owner。第②行代码声明了静态属性interestRate。第③行代码是定义静态方法interestBy,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。
第④行是定义实例方法messageWith,实例方法能访问实例属性和方法,也能访问静态属性和方法。在该方法中我们使用self.owner语句,其中self是一个隐藏属性,指代当前类型实例,一般情况下我们不要使用它,除非属性名与变量或常量名发生冲突。
提示Swift的静态方法中也能使用self,这在其他面向对象的计算机语言中是不允许的。此时self表示当前数据类型,不代表枚举、结构体或类的实例。
二、枚举中静态方法
下面我们再看一个枚举静态方法的示例,代码如下:
上述代码是定义Account枚举,第①行代码声明了静态属性interestRate。第②行代码是定义静态方法interestBy,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。第③行代码是调用静态方法。
从示例可以看出,结构体和枚举的静态方法使用定义没有区别。
三、类中静态方法
下面我们再看一个类方法的示例,代码如下:
一、结构体中静态方法
下面我们先看一个结构体静态方法的示例,代码如下:
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,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。第②行代码是调用静态方法。
更多内容请关注国内第一本Swift图书《Swift开发指南》
本书交流讨论网站:http://www.51work6.com/swift.php
欢迎加入Swift技术讨论群:362298485
欢迎关注智捷iOS课堂微信公共平台
0 0
- Swift静态方法
- swift 静态方法
- Swift静态方法
- swift 学习记录(静态方法)
- swift - 类型方法(即静态变量)
- Swift中的Class、单继承机制、静态方法
- Swift - 类型属性(类静态属性)和类方法(类静态方法)
- Swift静态属性
- Swift方法
- [Swift]方法
- Swift 方法
- Swift-- 方法
- Swift 方法
- Swift方法
- Swift 方法
- Swift方法
- Swift-方法
- swift方法
- HDU 3572 Task Schedule(最大流)
- 约数之和
- linux下的线程同步互斥量+条件变量
- 给还在淘宝刷钻的刷手们一点建议
- SQL入门(1)——创建,删除,查看数据库(database)信息
- Swift静态方法
- java.lang.NullPointerException(万普平台SDK出错解决办法)
- html小知识11
- C/C++语言经典、实用、趣味程序设计编程百例精解
- 多线程并发之java内存模型JMM
- ./configure 常用参数
- 【DP】UVA 111 History Grading
- 几种通信编码方式
- 关于多线程和GCD新手教程(一)