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

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

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

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

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

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

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

更多内容请关注国内第一本Swift图书《Swift开发指南》
本书交流讨论网站:http://www.51work6.com/swift.php
欢迎加入Swift技术讨论群:362298485

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

Swift静态方法的更多相关文章

  1. Swift—静态方法-备

    静态方法与静态属性类似,Swift中定义了静态方法,也称为类型方法.静态方法的定义与静态属性类似,枚举和结构体的静态方法使用的关键字是static:类静态方法使用的关键字是class或static,如 ...

  2. 《从零开始学Swift》学习笔记(Day 36)——静态方法

    原创文章,欢迎转载.转载请注明:关东升的博客 静态方法与静态属性类似,Swift中定义了静态方法,也称为类型方法.静态方法的定义与静态属性类似,枚举和结构体的静态方法使用的关键字是static:类静态 ...

  3. Swift - 类型属性(类静态属性)和类方法(类静态方法)

    1,结构体struct和枚举enum的静态属性,静态方法使用static关键字 1 2 3 4 5 6 7 8 9 10 struct Account {      var amount : Doub ...

  4. Swift基础之init方法,实例方法,类方法(静态方法)的使用(多标签Demo)

    Xcode更新过后,有些方法都进行了改变,Demo中有变化的都进行了简单的标记,具体以后遇见再说 创建一个UIView类,用init方法创建两种类型,显示多标签,创建静态方法进行调用,创建类方法进行调 ...

  5. Swift 中的静态方法继承

    Base and Derived Classes: class BaseClass{ class func staticMethod(){ println("BaseClass.static ...

  6. iOS开发系列--Swift进阶

    概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...

  7. swift 的枚举、结构体、类

    一.Swift的枚举 枚举是一系相关联的值定义的一个公共的组类型,同时能够让你在编程的时候在类型安全的情况下去使用这些值.Swift中的枚举比OC中的枚举强大得多, 因为Swift中的枚举是一等类型, ...

  8. iOS8.3发布了Swift 1.2带来哪些新变化

    苹果前几日在面向开发者推送iOS 8.3 Beta的同时,还发布了版本号为6D520o的Xcode 6.3 Beta,其中便包含了iOS 8.3 Beta和OS X v10.10 SDK,并进一步提升 ...

  9. 6.Swift协议|扩展|访问权限|异常调试|类型转换|运算函数|ARC|类类型初试化器|值类型初始化器

    1. 协议(Protocol):与OC之间唯一不同的是Swift中的协议不管是属性还时方法全部是必须实现的 /** protocol*/ protocol FullNamed { /** 计算属性申明 ...

随机推荐

  1. SmallDateTime时间范围检查

    SamllDataTime是SQL Server中的一种表达时间的类型, 精度不高但是省空间,具体的细节就查看一下MSDN的文档吧. http://msdn.microsoft.com/zh-cn/l ...

  2. Android进阶2之APK方式换肤

    public class MainActivity extends Activity { private Button defaultbutton = null; @Override public v ...

  3. _vsnprintf 用法

    _vsnprintf,C语言库函数之一,属于可变参数.用于向字符串中打印数据.数据格式用户自定义. 头文件: #include <stdarg.h> 函数声明: int _vsnprint ...

  4. Keeplived 详解

    http://www.cnblogs.com/pricks/p/3822232.html

  5. LINUX 内核2

    http://blog.csdn.net/acs713/article/category/1363650

  6. uboot_starts_analysis.pdf

    Uboot中start.S源码的指令级的详尽解析 HTML版本的在线地址为:http://www.crifan.com/files/doc/docbook/uboot_starts_analysis/ ...

  7. iOS 10 的适配问题

    随着iOS10发布的临近,大家的App都需要适配iOS10,下面是我总结的一些关于iOS10适配方面的问题,如果有错误,欢迎指出. 1.系统判断方法失效: 在你的项目中,当需要判断系统版本的话,不要使 ...

  8. Android开发之神奇的Fading Edge,让你的View更有层次感!

    最近在研究Android Framework层源码,发现我们对源码的理解应该建立在对API的理解之上,如果有一些API你没用过,那么即使你在源码中见到这个东西都不知道是干嘛的,更谈不上理解了.一直以来 ...

  9. Android进阶笔记16:ListView篇之ListView刷新显示(全局 和 局部)

    一.ListView内容变化后,动态刷新的步骤(全局刷新): (1)更新适配器Adapter数据源:(不要使用匿名内部类) (2)调用适配器Adapter的刷新方法notifyDataSetChang ...

  10. 《Cortex-M0权威指南》之绪论

    转载请注明来源:cuixiaolei的技术博客 1.1 为什么要选择Cortex-M0 为了满足现代超低功耗微控制器和混合信号设备的需要,ARM推出了Cortex-M0处理器.Cortex-M0在保持 ...