[swift-day08-setter&getter]
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
class MyCirle{
var r:Double
init(){
r = 3.0;
}
//獲取面積
func getArea() ->Double{
return 3.34*r*r;
}
var s:Double{
//這里的get 和 set 方法 和oc 的是不一樣的
//getter方法 用于計(jì)算屬性 不能存儲(chǔ)數(shù)據(jù)的 用于計(jì)算一個(gè)值的
get{
return 3.14*r*r;
}
//傳入一個(gè)面積求半徑
set (newArea){//可以設(shè)置參數(shù) 也可以不設(shè)置 不設(shè)置參數(shù) 那么默認(rèn)會(huì)傳進(jìn)來(lái)一個(gè)newValue
self.r = sqrt(newArea/3.14)
}
// set {//這就是沒(méi)有設(shè)置參數(shù)
// self.r = sqrt(newValue/3.14)
//
// }
}
}
var cirl = MyCirle()
print(cirl.getArea())//調(diào)用的方法 得到面積
print(cirl.s) //可以使用. 來(lái)獲取面積 這里內(nèi)部會(huì)調(diào)用get 方法 沒(méi)有顯示調(diào)用方法
//設(shè)置 一個(gè)面積 根據(jù)面積 內(nèi)部 會(huì)計(jì)算出 半徑的值
cirl.s = 314
//打印新的半徑值
print(cirl.r)
//結(jié)構(gòu)體中也有和類(lèi)一樣的get 和 set 計(jì)算屬性,如下例子
struct Point {
var x = 0.0, y = 0.0
}
struct Size {
var width = 0.0,height = 0.0
}
struct Rect {
//創(chuàng)建一個(gè)對(duì)象
var origin = Point()
var size = Size ()
//center 屬性 計(jì)算屬性 從 size 和 origin 計(jì)算出來(lái)
//var center = 0.0;
//center 不是用來(lái)存儲(chǔ)的 是一個(gè)計(jì)算的
var center :Point {
//getter方法
get{
let x = origin.x + (size.width/2)
let y = origin.y + (size.height/2)
return Point (x:x,y:y)
}
//setter函數(shù) newCenter 是參數(shù)
set(newCenter) {
//不寫(xiě) newCenter 默認(rèn)是 newValue
origin.x = newCenter.x + size.width/2
origin.y = newCenter.y + size.height/2
}
}
func getCenter()->(Double,Double) {
let x = origin.x + (size.width/2)
let y = origin.y + (size.height/2)
return (x,y)
}
}
var rect = Rect (origin: Point(x: 100, y: 200), size:Size(width: 400, height: 44))
//顯示調(diào)用函數(shù)
var (x,y) = rect.getCenter()
print("x:\(x),\(y)")
//不需要顯示調(diào)用函數(shù) getter
var p2 = rect.center
print("x2:\(p2.x) y2:\(p2.y)")
//不需要顯示調(diào)用 函數(shù) 這樣 比較方便 實(shí)際上 這里也是在調(diào)用函數(shù)
rect.center = Point(x: 10000, y: 20000)
print("x:\(rect.center.x)")
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者