`

Swift静态方法

 
阅读更多

与静态属性类似,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-用Swift编写的工程代码静态分析命令行工具smck

    `smck`就是这样一个工具,它是用Swift编写的,专为Swift工程提供代码静态分析功能的命令行工具。 `smck`的主要作用在于帮助开发者在编码阶段发现潜在的错误、不规范的编程习惯以及可能的性能瓶颈,从而提高代码的...

    swift-StroyBoard使用示例主要tableView(静态动态)scrollviewcollectionView展示

    在这个“swift-StroyBoard使用示例主要tableView(静态动态)scrollviewcollectionView展示”项目中,我们将深入探讨如何利用Storyboard来创建和管理表格视图(tableView)、滚动视图(scrollView)以及集合视图...

    swift-Tailor跨平台静态分析工具代码分析工具

    Swift-Tailor是一款针对Swift编程语言的跨平台静态分析工具,它的主要目的是为了提升代码质量,保持代码风格的一致性,并且帮助开发者发现并避免潜在的编程错误。静态分析工具在软件开发过程中扮演着重要的角色,...

    如何快速用上Swift静态库详解

    Swift静态库的使用方法 Swift静态库是一种将代码编译为单个可链接文件的库类型,它在编译时会合并到目标应用程序中,从而减少了运行时的内存占用和提高了加载速度。对于某些项目,特别是那些需要保护源代码安全或...

    swift-GLESImageKit一个OpenGLES框架用于处理相机实时滤镜和静态图像滤镜

    Swift-GLESImageKit是一个专为iOS开发者设计的OpenGLES框架,主要目标是提供相机实时滤镜和静态图像滤镜的处理能力。这个框架利用了OpenGL ES的强大图形处理能力,为移动应用添加丰富的视觉效果。在本文中,我们将...

    适用于Swift开发人员的静态网站生成器-Swift开发

    欢迎使用Publish,这是专门为Swift开发人员构建的静态网站生成器。 它使整个网站都可以使用Swift构建,并支持主题,插件和大量其他强大的自定义选项。 Publi欢迎使用Publish,这是专门为Swift开发人员构建的静态网站...

    Swift Apprentice (Swift 4.2)

    1. **类型安全**:Swift是一种静态类型语言,这意味着在编译时就能检测出许多潜在的错误。Swift 4.2进一步增强了类型推断,使得变量和常量的类型更加明确。 2. **API设计指南**:Swift 4.2遵循更一致的API设计,...

    swift 4资料(swift4进阶和函数式swift4、以及swift4.2更新内容和XCode10更新内容)

    Swift 4.2还引入了`static let`的自动初始化,使得静态常量的定义更加简洁。 与Swift 4.2一同发布的Xcode 10是Apple的集成开发环境的重大升级。Xcode 10提供了更好的代码编辑体验,包括增强的代码补全和智能感知。...

    swift-Swift实现的打字机效果UILabel子类

    UILabel是iOS SDK中用于显示单行或多行静态文本的默认视图。然而,它并不提供内置的打字机效果。为了实现这个效果,我们需要创建一个自定义的UILabel子类,并重写其内部的一些关键方法。 在创建自定义UILabel子类时...

    Swift3.0.1文档_The Swift Programming Language

    2. 类型系统:Swift有着严格的静态类型系统,类型自动推断使得编写代码更简洁。例如,`var myInt = 42`,编译器会自动推断`myInt`为`Int`类型。 3. 函数:Swift支持函数定义,可以有参数和返回值。函数可以通过命名...

    Swift教程:Swift基础,第一个Swift程序

    Swift是静态类型语言,这意味着每个变量和常量都有一个明确的类型。基本数据类型包括整型(Int)、浮点型(Double或Float)、布尔型(Bool)和字符串型(String)。 4. **变量与常量**: 常量(let)一旦声明并...

    swift-Swift开源项目-模仿单糖

    1. **类型系统**:Swift有严格的静态类型系统,变量和常量在声明时必须指定类型,如Int、String、Double等。此外,它还支持推断类型,使得代码更简洁。 2. **结构体与枚举**:Swift中的结构体(Struct)和枚举...

    swift-swift-web一个用于处理HTMLCSS路由和中间件的Swift服务器端框架集合

    4. **静态资源服务**:由于涉及到CSS,Swift-web 可能提供了处理静态资源的能力,如CSS、JavaScript、图片等,确保这些文件能够被正确地发送给客户端。 5. **错误处理**:Swift-web 应该包含一套错误处理机制,当...

    Swift_4_Apprentice_v3.0_Third_Edition

    1. **类型系统**:Swift 4具有严格的类型系统,强制类型推断和静态类型,确保代码的稳定性和安全性。例如,变量和常量声明时必须指定类型,避免了隐式类型转换可能引发的错误。 2. **Optionals**:Swift 4中的...

    Swift入门PPT和源码

    Swift是一种静态类型语言,这意味着变量和常量在声明时必须指定其类型,并在整个程序中保持不变。 2. **条件语句**: Swift支持if语句和switch语句进行条件判断。if语句用于简单的单条件判断,而switch语句则允许...

    The Swift Programming Language (Swift3.0.1)

    1. **强类型与安全**:Swift是一种静态类型的编程语言,它在编译时进行类型检查,防止运行时出现类型错误。此外,Swift还提供了许多安全特性,如可选类型(Optionals),用于处理可能的null值,避免空指针异常。 2....

    swift-一行代码搞定APP启动广告页支持播放Gif和图片(Swift)

    这个项目标题"swift-一行代码搞定APP启动广告页支持播放Gif和图片(Swift)"表明,开发者通过优化代码实现了一个简洁高效的方法来完成这一功能。下面我们将详细探讨如何在Swift中实现这个功能。 首先,让我们理解什么...

    裁缝:Swift的跨平台静态分析器和lint

    用于跨平台静态分析器和linter。 Tailor开箱即支持Swift 3.0.1,并帮助实施 , , 和样式指南中样式指南。 它支持跨平台使用,可以通过外壳在Mac OS X上运行,也可以与Xcode集成在一起,也可以在Linux和Windows上...

    swift-SwiftLambdaApp一个利用Swift构建AmazonLambda应用的模板

    Swift Lambda App的优势在于,它使开发者能够利用Swift的强类型和静态分析特性,提高代码质量,同时享受到Lambda的弹性和低成本。此外,Swift的生态系统提供了丰富的库和工具,可以帮助开发者轻松地实现复杂的功能。...

    swift-numsw类似于numpy的Swift库

    1. **类型安全**:由于Swift是一种静态类型语言,Swift-numsw会强制执行类型检查,确保所有操作都符合预期的类型。 2. **内存管理**:与numpy不同,Swift-numsw中的数组是值类型,这意味着拷贝数组可能会复制其所有...

Global site tag (gtag.js) - Google Analytics