• swift基础语法(21-结构体,结构体构造器,定义成员方法)


    结构体:
    结构体是用于封装不同或相同类型的数据的
    Swift中的结构体是一类类型, 可以定义属性和方法(甚至构造方法和析构方法等)
    格式:
    struct 结构体名称 {
        结构体属性和方法
    }
    struct Rect {
        var Double = 0.0
        var height:Double = 0.0
    }
    如果结构体的属性有默认值, 可以直接使用()构造一个结构体
    如果结构体的属性没有默认值, 必须使用逐一构造器实例化结构体
    var r = Rect()
    print("width = (r.width) height = (r.height)")
    输出结果: width = 0.0 height = 0.0
     
    结构体属性的访问使用.语法
    var r = Rect()
    r.width = 100
    r.height = 99
    print("width = (r.width) height = (r.height)")
    输出结果: width = 100.0 height = 99.0
     
     
    结构体构造器
    Swift中的结构体和类跟其它面向对象语言一样都有构造函数, 而OC是没有的
    Swift要求实例化一个结构体或类的时候,所有的成员变量都必须有初始值,
    构造函数的意义就是用于初始化所有成员变量的, 而不是分配内存, 分配内存是系统帮我们做的.
    如果结构体中的所有属性都有默认值, 可以调用()构造一个结构体实例
    如果结构体中的属性没有默认值, 可以自定义构造器, 并在构造器中给所有的属性赋值
    其实结构体有一个默认的逐一构造器, 用于在初始化时给所有属性赋值
     
    struct Rect2 {
        var Double
        var height:Double = 0.0
    }
    逐一构造器
    var r1 = Rect2( 10.0, height: 10.0);
    错误写法, 顺序必须和结构体中成员的顺序一致
    var r1 = Rect2(height: 10.0, 10.0);
    错误写法, 必须包含所有成员
    var r1 = Rect2(height: 10.0);
     
     
    结构体中定义成员方法
    在C和OC中结构体只有属性, 而Swift中结构体中还可以定义方法
    struct Rect {
        var Double
        var height:Double = 0.0
        给结构体定义一个方法, 该方法属于该结构体
        结构体中的成员方法必须使用某个实例调用
        成员方法可以访问成员属性
        func getWidth() -> Double{
            return width
        }
    }
     
    var r = Rect( 10.0, height: 20.0)
    结构体中的成员方法是和某个实例对象绑定在一起的,
    所以谁调用, 方法中访问的属性就属于谁
    print(r.getWidth())
    输出结果: 10.0
    var r1 = Rect( 30.0, height: 20.0)
    print(r1.getWidth())
    输出结果: 30.0
     
     
    结构体是值类型
    struct Rect {
        var Double
        var height:Double = 0.0
        func show() -> Void{
            print("width = (width) height = (height)")
        }
    }

    var r1 = Rect( 10.0, height: 10.0)
    var r2 = r1
    r1.show()
    r2.show()
    r1.width = 20.0
    结构体是值类型, 结构体之间的赋值其实是将r1中的值完全拷贝一份到r2中,
    所以他们是两个不同的实例
    r1.show()
    r2.show()
    输出结果:
    width = 10.0 height = 10.0
    width = 10.0 height = 10.0
    width = 20.0 height = 10.0
    width = 10.0 height = 10.0
  • 相关阅读:
    从零开始学android开发-通过WebService获取今日天气情况
    android常见错误-E/AndroidRuntime(13678): java.lang.NoClassDefFoundError:
    java 使用相对路径读取文件
    冒泡排序
    快速排序
    为什么使用抽象类?有什么好处?
    为什么用 抽象类,接口
    String.valueOf()
    Python 资源
    文本相似度-BM25算法
  • 原文地址:https://www.cnblogs.com/jordanYang/p/5378417.html
Copyright © 2020-2023  润新知