程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> Object

Object

編輯:關於C

計算屬性相當於Object-C的getter、setter合成的屬性,在Swift中結構體、類都可以定義計算屬性

定義計算屬性

[修飾符] var 計算屬性名:屬性類型{
 get{
 //getter方法執行體,該方法必須有返回值
 }
 [set(形參名)
 {
 //setter方法執行體,該方法一定不能有返回值
 }]
}

注意:var計算屬性只能定義成變量形式

enum Season
{
case Spring,Summer,Fall,Winter
var info:String
{
  get{
  print("正在執行getter方法")
    switch(self)
    {
     case .Spring:
     return "春暖花開"
     }
     default:
     return "此恨綿綿無絕期"
}
}
set(newValue)
{
print("正在執行setter方法,傳入參數為:\(newValue)")
}
}
}
var s=Season.Spring
print(s.info)//訪問info屬性,實際就是調用對應的getter方法
s.info="秋高氣爽"//對info屬性賦值,實際就是調用對應的setter方法
}

再舉一個類的例子

class User
{
  var first:String=""
  var last:String=""
  var fullName:String
  {
   get {
     return first + "-" + last
   }
   set(newValue)
   {
     var names=newValue.componentsSeparatedByString("-")
     self.first=names[0]
     self.last=name[1]
   }
  }
  init(first:String,last:String)
  {
  self.first=first
  self.last=last
  }
}
    let s=User(first:"六小齡童",last:"孫悟空")
    print(s.fullName)
    s.fullName="甄子丹-悟空"
    print(s.first)//輸出甄子丹
    print(s.last)//輸出悟空

setter方法簡化

計算屬性的setter方法總是只有一個形參,且該形參的類型與該計算屬性的類型相同,因此Swift允許在定義計算屬性時省略set部分的形參名。
如果程序省略計算屬性的set部分的形參名,程序將為該形參提供一個隱式的形參名:newValue。所以可以改為

set{
   var names=newValue.componentsSeparatedByString("-")
   self.first=name[0]
   self.last=name[1]
}

只讀的計算屬性

只有get部分的話稱為只讀的計算屬性。我們可以省略get關鍵字和花括號
如上面的可以改為

 var fullName:String{
  return first + "-" + last
 }

注意即使是只讀屬性也必須用var關鍵字

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved