美文网首页
swift-day08-setter&getter

swift-day08-setter&getter

作者: 临川慕容吹雪 | 来源:发表于2016-07-21 17:57 被阅读40次

    [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方法 用于计算属性  不能存储数据的 用于计算一个值的
                    get{
                    
                        return 3.14*r*r;
                    
                    }
                    //传入一个面积求半径
                    set (newArea){//可以设置参数 也可以不设置 不设置参数 那么默认会传进来一个newValue
                     self.r = sqrt(newArea/3.14)
                    
                    }
    //                set {//这就是没有设置参数
    //                    self.r = sqrt(newValue/3.14)
    //                    
    //                }
    
                
                
                }
            
            }
            var cirl = MyCirle()
            
            print(cirl.getArea())//调用的方法 得到面积
            
            print(cirl.s) //可以使用. 来获取面积 这里内部会调用get 方法 没有显示调用方法
            
            //设置 一个面积  根据面积 内部 会计算出 半径的值
            cirl.s = 314
            //打印新的半径值
            print(cirl.r)
            //结构体中也有和类一样的get 和 set 计算属性,如下例子
            
            struct Point {
                var x = 0.0, y = 0.0
            }
            
            struct Size {
                var width = 0.0,height = 0.0
            }
            
            struct Rect {
                //创建一个对象
                var origin = Point()
                var size = Size ()
                
                //center 属性 计算属性  从 size 和 origin 计算出来
                //var center = 0.0;
                //center 不是用来存储的 是一个计算的
                
                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函数  newCenter 是参数
                    set(newCenter) {
                        //不写 newCenter 默认是 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))
            
            //显示调用函数
            var (x,y) = rect.getCenter()
            
            print("x:\(x),\(y)")
            
            
            //不需要显示调用函数 getter
            var p2 = rect.center
            print("x2:\(p2.x) y2:\(p2.y)")
            //不需要显示调用 函数 这样 比较方便 实际上 这里也是在调用函数
            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.
        }
    
    
    }
    

    相关文章

      网友评论

          本文标题:swift-day08-setter&getter

          本文链接:https://www.haomeiwen.com/subject/bmibjttx.html