手把手教swift-类和结构体

<span style="color:#CC0000;">class</span> Animal
{
     let age:Int
     let color:String
     let type:String

     init(age:Int,color:String,type:String)
     {
        self.age = age
        self.type = type
        self.color = color
     } 
 }

对于上述类的定义我总结几点需要注意的点:

1.对于属性必须给定类型,再声明属性的时候我们可以直接实例化给值也可以通过初始化函数给属性值

总之一句话必须给值,不能像OC那样直接声明不初始化

2.初始化函数无返回值

所以可以写成这样:

class Animal {
    let age:Int = 2
    let color:String = String()
    let type:String = ""
    
}

结构体

struct GeoLocation {
    var latitude:Double
    var longitude:Double
    let distance:Double
}

发现没有他们之间在定义方面的区别点

1.结构体不需要初始化,直接声明即可

2.类必须要初始化属性,才算定义完成

再来看一下的区别:

显而易见,这是针对他们本身的类型来说,当方法赋值操作的时候,结构体是值类型,类是引用类型

所以区别就是点:

值类型赋值后会真的拷贝

引用类型赋值后都是同一个对象

再来看最后一个区别点:

注意到了吗?

当我们把结构体的实例对象声明为常量后,无法再次修改常量结构体实例对象的任何属性值(不管属性是常量还是变量)  注意是再次初始化给得值不算不管你是默认给值还是通过初始化函数给值都不算,因为都是第一次,而且初始化的时候必须要让属性都有值,这是必须的不然报错

当我们把结构体的实例对象声明为变量的话,我们还是可以修改结构体里面的变量属性的值得

总之要根据两点确定能不能修改,首先外面的结构体是常量还是变量,第二里面的属性是常量还是变量,只有两者都是变量的时候才能修改,否则都无法修改

针对类的话,明确一点:

只要类里面的属性不是常量,就可以修改属性值,不管你的类实例是常量还是变量


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值