Swift静态方法

摘要:
与静态属性类似,Swift还定义了静态方法,也称为类型方法。所谓的“类型”是指枚举、结构和类。第三行中的代码定义了静态方法interestBy,它类似于静态计算属性,无法访问实例属性或实例方法。建议Swift也可以在其静态方法中使用self,这在其他面向对象的计算机语言中是不允许的。

与静态属性类似,Swift中还定义了静态方法,也称为类型方法,所谓“类型”是指枚举、结构体和类。静态方法定义的方法也是与静态属性类似的,枚举和结构体的静态方法使用的关键字是static,类的静态方法使用的关键字是class。
一、结构体中静态方法
下面我们先看一个结构体静态方法的示例,代码如下:

[html] view plaincopy
 
  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] view plaincopy
 
  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] view plaincopy
 
  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开发指南》
本书交流讨论网站:http://www.51work6.com/swift.php
欢迎加入Swift技术讨论群:362298485

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

Swift静态方法第1张

免责声明:文章转载自《Swift静态方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇前端数据存储方案集合(cookie localStorage等)以及详解 (一)Electron学习笔记(十四)—— 常用api____dialog下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

android 内存泄漏,以及检测方法

1、为什么会产生内存泄漏 当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏。 2、内存泄漏对程序的影响 内存泄漏是造成应用程序OOM的主要原因之一。我们知道Android系统为每个应用程序分配的内存是有限的,而当一个应用中产生的内存泄漏比较多...

QApplication的用法

QApplication的用法 来源 https://blog.csdn.net/qq_21342281/article/details/85322927 QApplication管理GUI程序的控制流和主要设置。 QApplication包含窗口系统和其他来源处理过和发送过的主事件循环。它也处理应用程序的初始化和收尾工作,并提供对话管理。QApplica...

习题解答chapter02

1. 对象与对象引用的区别是什么? 创建案例代码: public class Study{ // 默认构造方法 public Study{ } } 对象创建操作Study temp = new Study();语句解读: 左边的“Study temp”创建了一个Stu...

Java基础教程——内部类

内部类 内部类(inner class)是定义在另一个类中的类 内部类的好处: |--1.隐藏机制:内部类封装性更好,隐藏在一个类之中,同一包中的其他类也不能访问 |--2.内部类可以访问外围类的私有数据 成员内部类 member inner class 可以访问外部类的所有成员变量和方法(无论静态、非静态) 自身没有静态成员 |--外部类里面创建成员内...

HTTP,URL,FS 模块搭建一个静态WEB服务器

WEB服务器: 一般指网站服务器,是指驻留在因特网上某种类型计算机的程序,可以向浏览器等Web 客户端提供文档,也可以放置网站文件让全世界浏览,还可以放置数据文件,让全世界下载,目前最主流的Web服务器有 Apache,Nginx,IIS等。 NodeJS 创建一个WEB服务器, 可以让我们访问Web服务器上面的网站 可以让我们下载Web服务器上面的文件...

Gradle里配置jetty实现静态资源的热部署

通过Gradle我们可以很方便的使用内置jetty启动我们的web程序,在本地进行调试。但是在使用的过程中,我发现了几个问题,导致本地调试的效率大受影响。 如果使用gradle jettyRun启动jetty服务器后,项目里的静态资源(jsp,html,JavaScript文件)都被锁定了,导致无法实时修改这些静态资源。 既然无法实时修改这些静态资源,...