DahuangPhoneiOSSwift → Swift中结构体和类的对比


  共有8566人关注过本帖树形打印复制链接

主题:Swift中结构体和类的对比

帅哥哟,离线,有人找我吗?
dahuangphone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:407 积分:4533 威望:0 精华:0 注册:2012/9/29 7:54:10
Swift中结构体和类的对比  发帖心情 Post By:2014/10/11 20:57:39 [只看该作者]

//两者都可以定义成员变量,成员方法,都有下标和构造器

//结构体没有继承性,不具备运行时轻质类型转换、使用析构器和使用引用计能力


//定义


class Aclass{

    

}


struct Astruct{

    

}


class Emplyee{

    var no:Int=0

    var name:String=""

    var job:String?

    var salary:Double=0.0

    

    var dept:Department?

}


struct Department{

    var no:Int=0

    var name:String=""

}



var dept=Department()


dept.no=10

dept.name="Sales"



var emp=Emplyee()

emp.no=1000

emp.name="Martin"

emp.job="Salesman"

emp.salary=12200

emp.dept=dept


func updateDept(inout dept:Department){  //此处必须使用inout代表引用,因为结构体是值类型

    dept.no=3333

}


func updateEmp(emp:Emplyee){  // 这里不需要inout,因为类是引用类型

    emp.no=4444

}


updateDept(&dept);

updateEmp(emp);


var emp1=emp


var isE=emp===emp1  //就是确定是否指向同一个地址


var dept1=dept


isE=dept==dept1  //这么写必须要在结构体内重写==运算符,定义相等规则


//类型嵌套

//优点,便于访问类型外部类成员

//缺点,可读性差


class Emplyee{

    var no:Int=0

    var name:String=""

    var job:String?

    var salary:Double=0.0

    

    var dept:Department=Department()

    

    var day:Weekday=Weekday.Wendnesday

    

    struct Department{

        var no:Int=0

        var name:String=""

    }

    

    enum Weekday{

        case Monday,Tuesday,Wendnesday,Thursday,Firday   //最后一个没有逗号

        

        struct Day{

            static var message:String="Today is..."

        }

    }

}


var emp=Emplyee()


let wendesday=Emplyee.Weekday.Wendnesday

if(wendesday==emp.day){

    println("==")

}


var message=Emplyee.Weekday.Day.message


 回到顶部