博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift静态方法
阅读量:4961 次
发布时间:2019-06-12

本文共 1781 字,大约阅读时间需要 5 分钟。

与静态属性类似,Swift中还定义了静态方法,也称为类型方法,所谓“类型”是指枚举、结构体和类。静态方法定义的方法也是与静态属性类似的,枚举和结构体的静态方法使用的关键字是static,类的静态方法使用的关键字是class。

一、结构体中静态方法
下面我们先看一个结构体静态方法的示例,代码如下:

[html] 
 
  1. struct Account {  
  2.       
  3.     var owner : String = "Tony"                 //账户名   ①  
  4.     static var interestRate : Double = 0.668    //利率    ②  
  5.       
  6.     static func interestBy(amount : Double) -> Double {  ③  
  7.   
  8.   
  9.         return interestRate * amount  
  10.     }  
  11.       
  12.     func messageWith (amount : Double) -> String {   ④  
  13.           
  14.         var interest = Account.interestBy(amount)  
  15.         return "\(self.owner) 的利息是\(interest)"  
  16.           
  17.     }  
  18. }  
  19.   
  20.   
  21. //调用静态方法  
  22. println(Account.interestBy(10_000.00))  ⑤  
  23.   
  24.   
  25. var myAccount = Account()   ⑥  
  26. //调用实例方法  
  27. println(myAccount.messageWith (10_000.00))  ⑦  

上述代码是定义Account结构体,第①行代码声明了实例属性owner。第②行代码声明了静态属性interestRate。第③行代码是定义静态方法interestBy,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。
第④行是定义实例方法messageWith,实例方法能访问实例属性和方法,也能访问静态属性和方法。在该方法中我们使用self.owner语句,其中self是一个隐藏属性,指代当前类型实例,一般情况下我们不要使用它,除非属性名与变量或常量名发生冲突。
提示 Swift的静态方法中也能使用self,这在其他面向对象的计算机语言中是不允许的。此时self表示当前数据类型,不代表枚举、结构体或类的实例。
二、枚举中静态方法
下面我们再看一个枚举静态方法的示例,代码如下:

[html] 
 
  1. enum Account {  
  2.       
  3.     case 中国银行  
  4.     case 中国工商银行  
  5.     case 中国建设银行  
  6.     case 中国农业银行  
  7.       
  8.     static var interestRate : Double = 0.668 //利率   ①  
  9.       
  10.     static func interestBy(amount : Double) -> Double {  ②  
  11.         return interestRate * amount  
  12.     }  
  13. }  
  14.   
  15.   
  16. //调用静态方法  
  17. println(Account.interestBy(10_000.00 ))     ③  

上述代码是定义Account枚举,第①行代码声明了静态属性interestRate。第②行代码是定义静态方法interestBy,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。第③行代码是调用静态方法。
从示例可以看出,结构体和枚举的静态方法使用定义没有区别。
三、类中静态方法
下面我们再看一个类方法的示例,代码如下:

[html] 
 
  1. class Account {  
  2.       
  3.     var owner : String = "Tony"                 //账户名  
  4.   
  5.   
  6.     class func interestBy(amount : Double) -> Double {   ①  
  7.         return 0.8886 * amount  
  8.     }  
  9. }  
  10.   
  11.   
  12. //调用静态方法  
  13. println(Account.interestBy(10_000.00 )) ②  

上述代码是定义Account类,第①行代码是使用关键字class定义静态方法interestBy,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。第②行代码是调用静态方法。

 

 

更多内容请关注国内第一本Swift图书
本书交流讨论网站:
欢迎加入Swift技术讨论群:362298485

 

 

 

 

 

 

 

 

欢迎关注智捷iOS课堂微信公共平台

转载于:https://www.cnblogs.com/iOS-Blog/p/3948150.html

你可能感兴趣的文章
如何用WordPress做网站?
查看>>
Linux下gcc,g++,gdb,scon部分用法笔记
查看>>
Spring boot 1: 使用IDEA创建Spring boot项目
查看>>
经典SQL语句大全(转)
查看>>
多表查询
查看>>
assign和weak的深层次解析
查看>>
[string]字符串中几个比较难的算法和容易搞混的题目
查看>>
java integer String之equals vs ==
查看>>
调试maven源代码
查看>>
[转载]Java应用程序中的内存泄漏及内存管理
查看>>
算法体会以及常见机器学习算法公式
查看>>
css3属性之 box-sizing
查看>>
Essential reading: My top 10 books (zz)
查看>>
前端实现表格基于游览器固定显示
查看>>
Mac下安装 MongoDB
查看>>
2018秋季C语言学习总结
查看>>
node.js通俗理解
查看>>
IIS上部署WCF服务
查看>>
湖南集训day4
查看>>
轻松搞定数据验证(二)
查看>>