• Swift静态方法


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

    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表示当前数据类型,不代表枚举、结构体或类的实例。
    二、枚举中静态方法
    下面我们再看一个枚举静态方法的示例,代码如下:

    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,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。第③行代码是调用静态方法。
    从示例可以看出,结构体和枚举的静态方法使用定义没有区别。
    三、类中静态方法
    下面我们再看一个类方法的示例,代码如下:

    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,静态方法与静态计算属性类似,它不能访问实例属性或实例方法。第②行代码是调用静态方法。

  • 相关阅读:
    Map集合
    MySql函数之CONCAT、CONCAT_WS、GROUP_CONCAT函数详解
    mysql字符串转数字排序
    阿里巴巴Json工具Fastjson教程
    tf.set_shape
    numpy切片X[:,0]和X[:,1]
    numpy索引和切片 np.newaxis np.arange
    tf.cast()用于张量数据类型的转换
    自监督
    在神经网络中bias偏置有什么作用?
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/5484974.html
Copyright © 2020-2023  润新知