Swift静态方法
2015-11-26 16:26
363 查看
与静态属性类似,Swift中还定义了静态方法,也称为类型方法,所谓“类型”是指枚举、结构体和类。静态方法定义的方法也是与静态属性类似的,枚举和结构体的静态方法使用的关键字是static,类的静态方法使用的关键字是class。
一、结构体中静态方法
下面我们先看一个结构体静态方法的示例,代码如下:
[html] view plaincopy
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表示当前数据类型,不代表枚举、结构体或类的实例。
二、枚举中静态方法
下面我们再看一个枚举静态方法的示例,代码如下:
[html] view plaincopy
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,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。第③行代码是调用静态方法。
从示例可以看出,结构体和枚举的静态方法使用定义没有区别。
三、类中静态方法
下面我们再看一个类方法的示例,代码如下:
[html] view plaincopy
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,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。第②行代码是调用静态方法。
一、结构体中静态方法
下面我们先看一个结构体静态方法的示例,代码如下:
[html] view plaincopy
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表示当前数据类型,不代表枚举、结构体或类的实例。
二、枚举中静态方法
下面我们再看一个枚举静态方法的示例,代码如下:
[html] view plaincopy
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,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。第③行代码是调用静态方法。
从示例可以看出,结构体和枚举的静态方法使用定义没有区别。
三、类中静态方法
下面我们再看一个类方法的示例,代码如下:
[html] view plaincopy
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静态属性
- 开源项目链接汇总
- IOS_swift_函数用法
- 浅谈Swift2.0对optional value的安全处理,慎用问号叹号"?!",消除swift项目里的"?!"
- swift可选链和类型转换
- swift学习笔记-3
- Swift 下AFNetworking得使用
- 《swift2.0 官方教程中文版》 第2章-10属性
- Swift中的单例模式
- Swift线程安全详解-概念,三种锁,死锁,Atomic,synchronized
- Swift 使用nib文件做iOS界面,在Ios界面跳转传递数据
- swift 快速奔跑的兔几 本节的内容是:基于文档的应用程序
- Swift:自定义UITableViewCell背景色
- swift中的自动引用计数以及出现的问题
- Swift学习笔记23——访问控制(Access Control)
- swift--调用系统单例实现打电话
- 《swift2.0 官方教程中文版》 第2章-09类和结构体
- Swift:表格视图单元格单选(一)
- Swift iOS9 中网页不能显示
- Swift中的Reference Type和 Values Type