Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
iOS¿ª·¢ÏµÁÐ--SwiftÓïÑÔ£¨Ï£©
 
×÷ÕߣºKenshinCui À´×ÔÓÚ£º²©¿ÍÔ° ·¢²¼ÓÚ 2015-11-16
  2170  次浏览      27
 

Àà

×÷ΪһÃÅÃæÏò¶ÔÏóÓïÑÔ£¬À൱ȻÊÇSwiftÖеÄÒ»µÈÀàÐÍ¡£Ê×ÏÈͨ¹ýÏÂÃæµÄÀý×ÓÈôó¼Ò¶ÔSwiftµÄclassÓÐÒ»¸ö¼òµ¥µÄÓ¡Ïó£¬ÔÚÏÂÃæµÄÀý×ÓÖпÉÒÔ¿´µ½SwiftÖеÄÊôÐÔ¡¢·½·¨£¨°üÀ¨¹¹Ôì·½·¨ºÍÎö¹¹·½·¨£©£º


//SwiftÖÐÒ»¸öÀà¿ÉÒÔ²»¼Ì³ÐÓÚÈÎºÎÆäËû»ùÀ࣬ÄÇô´ËÀà±¾Éí¾ÍÊÇÒ»¸ö»ùÀà

class Person {

//¶¨ÒåÊôÐÔ

var name:String

var height=0.0

//¹¹ÔìÆ÷·½·¨£¬×¢ÒâÈç¹û²»±àд¹¹Ôì·½·¨Ä¬ÈÏ»á×Ô¶¯´´½¨Ò»¸öÎ޲ι¹Ôì·½·¨

init(name:String){

self.name=name

}

//¶¨Òå·½·¨

func showMessage(){

println("name=\(name),height=\(height)")

}

//Îö¹¹·½·¨£¬ÔÚ¶ÔÏó±»ÊÍ·Åʱµ÷ÓÃ,ÀàËÆÓÚObjCµÄdealloc£¬×¢Òâ´Ëº¯ÊýûÓÐÀ¨ºÅ£¬Ã»ÓвÎÊý£¬ÎÞ·¨Ö±½Óµ÷ÓÃ

deinit{

println("deinit...")

}

}

var p=Person(name: "Kenhin")

p.height=172.0

p.showMessage() //½á¹û£ºname=Kenhin,height=172.0

//ÀàÊÇÒýÓÃÀàÐÍ

var p2 = p

p2.name = "Kaoru"

println(p.name) //½á¹û£ºKaoru

if p === p2 { //¡°===¡±±íʾµÈ¼ÛÓÚ£¬ÕâÀï²»ÄÜʹÓõÈÓÚ¡°==¡±£¨µÈÓÚÓÃÓڱȽÏÖµÏàµÈ£¬pºÍp2ÊDz»Í¬µÄÖµ£¬Ö»ÊÇÖ¸ÏòµÄ¶ÔÏóÏàͬ£©

println("p===p2") //pµÈ¼ÛÓÚp2,¶þÕßÖ¸Ïòͬһ¸ö¶ÔÏó

}

´ÓÉÏÃæµÄÀý×Ó²»ÄÑ¿´³ö£º

1.SwiftÖеÄÀ಻±ØÐë¼Ì³ÐÒ»¸ö»ùÀࣨµ«ÊÇObjCͨ³£±ØÐë¼Ì³ÐÓÚNSObject£©£¬Èç¹ûÒ»¸öÀàûÓм̳ÐÓÚÈÎºÎÆäËûÀàÔòÕâ¸öÀàÒ²³ÆÎª¡°»ùÀࡱ£»

2.SwiftÖеÄÊôÐÔ¶¨ÒåÐÎʽÀàËÆÓÚÆäËûÓï¾äÖеijÉÔ±±äÁ¿£¨»ò³ÆÖ®Îª¡°ÊµÀý±äÁ¿¡±£©£¬¾¡¹ÜËüÓÐ×ųÉÔ±±äÁ¿Ã»ÓеÄÌØÐÔ£»

3.SwiftÖÐÈç¹û¿ª·¢ÕßûÓÐ×Ô¼º±àд¹¹Ôì·½·¨ÄÇôĬÈÏ»áÌṩһ¸öÎÞ²ÎÊý¹¹Ôì·½·¨£¨·ñÔò²»»á×Ô¶¯Éú³É¹¹Ôì·½·¨£©£»

4.SwiftÖеÄÎö¹¹·½·¨Ã»ÓÐÀ¨ºÅºÍ²ÎÊý£¬²¢ÇÒ²»Ö§³Ö×ÔÐе÷Óã»

ÊôÐÔ

SwiftÖеÄÊôÐÔ·ÖΪÁ½ÖÖ£º´æ´¢ÊôÐÔ£¨ÓÃÓÚÀà¡¢½á¹¹Ì壩ºÍ¼ÆËãÊôÐÔ£¨ÓÃÓÚÀà¡¢½á¹¹Ì塢ö¾Ù£©£¬²¢ÇÒÔÚSwiftÖв¢²»Ç¿µ÷³ÉÔ±±äÁ¿µÄ¸ÅÄî¡£ ÎÞÂÛ´Ó¸ÅÄîÉÏ»¹ÊǶ¨Ò巽ʽÉÏÀ´¿´´æ´¢ÊôÐÔ¸üÏñÆäËûÓïÑÔÖеijÉÔ±±äÁ¿£¬µ«ÊDz»Í¬µÄÊÇ¿ÉÒÔ¿ØÖƶÁд²Ù×÷¡¢Í¨¹ýÊôÐÔ¼àÊÓÆ÷À´ÊôÐԵı仯ÒÔ¼°¿ìËÙʵÏÖÀÁ¼ÓÔØ¹¦ÄÜ¡£


class Account {

var balance:Double=0.0

}

class Person {

//firstName¡¢lastName¡¢ageÊÇ´æ´¢ÊôÐÔ

var firstName:String

var lastName:String

let age:Int

//fullNameÊÇÒ»¸ö¼ÆËãÊôÐÔ£¬²¢ÇÒÓÉÓÚÖ»¶¨ÒåÁËget·½·¨£¬ËùÒÔÊÇÒ»¸öÖ»¶ÁÊôÐÔ

var fullName:String{

get{

return firstName + "." + lastName

}

set{

let array=split(newValue, maxSplit: Int.max, allowEmptySlices: false, isSeparator: {$0=="."})

if array.count == 2 {

firstName=array[0]

lastName=array[1]

}

}

//set·½·¨ÖеÄnewValue±íʾ¼´½«¸³µÄÐÂÖµ£¬¿ÉÒÔ×Ô¼ºÉèÖÃsetÖеÄnewValue±äÁ¿£¬ÈçÏ£º

// set(myValue){

// }

}

//Èç¹ûfullNameÖ»ÓÐgetÔòÊÇÒ»¸öÖ»¶ÁÊôÐÔ£¬Ö»¶ÁÊôÐÔ¿ÉÒÔ¼òдÈçÏ£º

// var fullName:String{

// return firstName + "." + lastName

// }

//ÊôÐÔµÄÀÁ¼ÓÔØ£¬µÚÒ»´Î·ÃÎÊ²Å»á¼ÆËã³õʼֵ£¬ÔÚSwiftÖÐÀÁ¼ÓÔØµÄÊôÐÔ²»Ò»¶¨¾ÍÊǶÔÏóÀàÐÍ£¬Ò²¿ÉÒÔÊÇ»ù±¾ÀàÐÍ

lazy var account = Account()

//¹¹ÔìÆ÷·½·¨£¬×¢ÒâÈç¹û²»±àд¹¹Ôì·½·¨Ä¬ÈÏ»á×Ô¶¯´´½¨Ò»¸öÎ޲ι¹Ôì·½·¨

init(firstName:String,lastName:String,age:Int){

self.firstName=firstName

self.lastName=lastName

self.age=age

}

//¶¨Òå·½·¨

func showMessage(){

println("name=\(self.fullName)")

}

}

var p=Person(firstName: "Kenshin", lastName: "Cui",age:29)

p.fullName="Kaoru.Sun"

p.account.balance=10

p.showMessage()

ÐèÒªÌáÐÑ´ó¼ÒµÄÊÇ£º

1.¼ÆËãÊôÐÔ²¢²»Ö±½Ó´æ´¢Ò»¸öÖµ£¬¶øÊÇÌṩgetterÀ´»ñȡһ¸öÖµ£¬»òÕßÀûÓÃsetterÀ´¼ä½ÓÉèÖÃÆäËûÊôÐÔ£»

2. lazyÊôÐÔ±ØÐëÓгõʼֵ£¬±ØÐëÊDZäÁ¿²»ÄÜÊdz£Á¿£¨ÒòΪ³£Á¿ÔÚ¹¹ÔìÍê³É֮ǰ¾ÍÒѾ­È·¶¨ÁËÖµ£©£»

3.ÔÚ¹¹Ôì·½·¨Ö®Ç°´æ´¢ÊôÐÔ±ØÐëÓÐÖµ£¬ÎÞÂÛÊDZäÁ¿ÊôÐÔ£¨varÐÞÊΣ©»¹Êdz£Á¿ÊôÐÔ£¨letÐÞÊΣ©Õâ¸öÖµ¼È¿ÉÒÔÔÚÊôÐÔ´´½¨Ê±Ö¸¶¨Ò²¿ÉÒÔÔÚ¹¹Ôì·½·¨ÄÚÖ¸¶¨£»

´ÓÉÏÃæµÄÀý×ÓÖв»ÄÑÇø·Ö´æ´¢ÊôÐԺͼÆËãÊôÐÔ£¬¼ÆËãÊôÐÔͨ³£»áÓÐÒ»¸ösetter¡¢getter·½·¨£¬Èç¹ûÒª¼àÊÓÒ»¸ö¼ÆËãÊôÐԵı仯ÔÚsetter·½·¨Öм´¿É°ìµ½£¨ÒòΪÔÚsetter·½·¨ÖпÉÒÔnewValue»òÕß×Ô¶¨Òå²ÎÊýÃû£©£¬µ«ÊÇÈç¹ûÊÇ´æ´¢ÊôÐÔ¾ÍÎÞ·¨Í¨¹ý¼àÊÓÊôÐԵı仯¹ý³ÌÁË£¬ÒòΪÔÚ´æ´¢ÊôÐÔÖÐÊÇÎÞ·¨¶¨Òåsetter·½·¨µÄ¡£²»¹ýSwiftΪÎÒÃÇÌṩÁËÁíÍâÁ½¸ö·½·¨À´¼àÊÓÊôÐԵı仯ÄǾÍÊÇwillSetºÍdidSet£¬Í¨³£³ÆÖ®Îª¡°ÊôÐÔ¼àÊÓÆ÷¡±»ò¡°ÊôÐÔ¹Û²ìÆ÷¡±¡£

class Account {

//×¢ÒâÉèÖÃĬÈÏÖµ0.0ʱ¼àÊÓÆ÷²»»á±»µ÷ÓÃ

var balance:Double=0.0{

willSet{

self.balance=2.0

//×¢ÒânewValue¿ÉÒÔʹÓÃ×Ô¶¨ÒåÖµ,²¢ÇÒÔÚÊôÐÔ¼àÊÓÆ÷ÄÚ²¿µ÷ÓÃÊôÐÔ²»»áÒýÆð¼àÊÓÆ÷Ñ­»·µ÷ÓÃ,×¢Òâ´ËʱÐÞ¸ÄbalanceµÄֵûÓÐÓÃ

println("Account.balance willSet,newValue=\(newValue),value=\(self.balance)")

}

didSet{

self.balance=3.0

//×¢ÒâoldValue¿ÉÒÔʹÓÃ×Ô¶¨ÒåÖµ,²¢ÇÒÔÚÊôÐÔ¼àÊÓÆ÷ÄÚ²¿µ÷ÓÃÊôÐÔ²»»áÒýÆð¼àÊÓÆ÷Ñ­»·µ÷Óã¬×¢Òâ´ËʱÐÞ¸ÄbalanceµÄÖµ½«×÷Ϊ×îÖÕ½á¹û

println("Account.balance didSet,oldValue=\(oldValue),value=\(self.balance)")

}

}

}

class Person {

var firstName:String

var lastName:String

let age:Int

var fullName:String{

get{

return firstName + "." + lastName

}

set{

//¶ÔÓÚ¼ÆËãÊôÐÔ¿ÉÒÔÖ±½ÓÔÚset·½·¨ÖнøÐÐÊôÐÔ¼àÊÓ

let array=split(newValue, maxSplit: Int.max, allowEmptySlices: false, isSeparator: { $0 == "." })

if array.count == 2 {

firstName=array[0]

lastName=array[1]

}

}

}

lazy var account = Account()

init(firstName:String,lastName:String,age:Int){

self.firstName=firstName

self.lastName=lastName

self.age=age

}

//ÀàÐÍÊôÐÔ

static var skin:Array<String>{

return ["yellow","white","black"];

}

}

var p=Person(firstName: "Kenshin", lastName: "Cui",age:29)

p.account.balance=1.0

println("p.account.balance=\(p.account.balance)") //½á¹û£ºp.account.balance=3.0

for color in Person.skin {

println(color)

}

1. ºÍsetter·½·¨ÖеÄnewValueÒ»Ñù£¬Ä¬ÈÏÇé¿öÏÂÔØwillSetºÍdidSetÖлáÓÐÒ»¸önewValueºÍoldValue²ÎÊý±íʾҪÉèÖõÄÐÂÖµºÍÒѾ­±»Ð޸ĹýµÄ¾ÉÖµ£¨µ±È»²ÎÊýÃûͬÑù¿ÉÒÔ×Ô¶¨Ò壩£»

2.´æ´¢ÊôÐÔµÄĬÈÏÖµÉèÖò»»áÒýÆðÊôÐÔ¼àÊÓÆ÷µÄµ÷Óã¨ÁíÍâÔÚ¹¹Ôì·½·¨Öи³ÖµÒ²²»»áÒýÆðÊôÐÔ¼àÊÓÆ÷µ÷Óã©£¬Ö»ÓÐÔÚÍⲿÉèÖô洢ÊôÐԲŻáÒýÆðÊôÐÔ¼àÊÓÆ÷µ÷Óã»

3.´æ´¢ÊôÐÔµÄÊôÐÔ¼àÊÓÆ÷willSet¡¢didSetÄÚ¿ÉÒÔÖ±½Ó·ÃÎÊÊôÐÔ£¬µ«ÊÇÔÚ¼ÆËãÊôÐÔµÄget¡¢set·½·¨Öв»ÄÜÖ±½Ó·ÃÎʼÆËãÊôÐÔ£¬·ñÔò»áÒýÆðÑ­»·µ÷Óã»

4.ÔÚdidSetÖпÉÒÔÐÞ¸ÄÊôÐÔµÄÖµ£¬Õâ¸öÖµ½«×÷Ϊ×îÖÕÖµ£¨ÔÚwillSetÖÐÎÞ·¨Ð޸ģ©£»

·½·¨

·½·¨¾ÍÊÇÓëij¸öÌØ¶¨Àà¹ØÁªµÄº¯Êý£¬ÆäÓ÷¨ºÍÇ°Ãæ½éÉܵĺ¯Êý²¢ÎÞ¶þÖ£¬µ«ÊǺÍObjCÏà±È£¬ObjCÖеĺ¯Êý±ØÐëÊÇCÓïÑÔ£¬¶ø·½·¨Ôò±ØÐëÊÇObjC¡£´ËÍâÆäËûÓïÑÔÖз½·¨Í¨³£´æÔÚÓÚÀàÖУ¬µ«ÊÇSwiftÖеķ½·¨³ýÁËÔÚÀàÖÐʹÓû¹¿ÉÒÔÔڽṹÌ塢ö¾ÙÖÐʹÓ᣹ØÓÚÆÕͨµÄ·½·¨ÕâÀï²»×ö¹ý¶à׸Êö£¬Ó÷¨ºÍÇ°ÃæµÄº¯ÊýÇø±ðÒ²²»´ó£¬ÕâÀïÖ÷Òª¿´Ò»Ï¹¹Ôì·½·¨¡£


class Person {

//¶¨ÒåÊôÐÔ

var name:String

var height:Double

var age=0

//Ö¸¶¨¹¹ÔìÆ÷·½·¨£¬×¢ÒâÈç¹û²»±àд¹¹Ôì·½·¨Ä¬ÈÏ»á×Ô¶¯´´½¨Ò»¸öÎ޲ι¹Ôì·½·¨

init(name:String,height:Double,age:Int){

self.name=name

self.height=height

self.age=age

}

//±ãÀû¹¹Ôì·½·¨£¬Í¨¹ýµ÷ÓÃÖ¸¶¨¹¹Ôì·½·¨¡¢ÌṩĬÈÏÖµÀ´¼ò»¯¹¹Ôì·½·¨ÊµÏÖ

convenience init(name:String){

self.init(name:name,height:0.0,age:0)

}

//ʵÀý·½·¨

func modifyInfoWithAge(age:Int,height:Double){

self.age=age

self.height=height

}

//ÀàÐÍ·½·¨

class func showClassName(){

println("Class name is \"Person\"")

}

//Îö¹¹·½·¨£¬ÔÚ¶ÔÏó±»ÊÍ·Åʱµ÷ÓÃ,ÀàËÆÓÚObjCµÄdealloc£¬×¢Òâ´Ëº¯ÊýûÓÐÀ¨ºÅ£¬Ã»ÓвÎÊý£¬ÎÞ·¨Ö±½Óµ÷ÓÃ

deinit{

println("deinit...")

}

}

//ͨ¹ý±ãÀû¹¹Ôì·½·¨´´½¨¶ÔÏó

var p=Person(name: "kenshin")

1.³ý¹¹Ôì·½·¨¡¢Îö¹¹·½·¨ÍâµÄÆäËû·½·¨µÄ²ÎÊýĬÈϳýÁ˵ÚÒ»¸ö²ÎÊýÊǾֲ¿²ÎÊý£¬´ÓµÚ¶þ¸ö²ÎÊý¿ªÊ¼¼ÈÊǾֲ¿²ÎÊýÓÖÊÇÍⲿ²ÎÊý£¨ÕâÖÖ·½Ê½ºÍObjCµÄµ÷Ó÷½Ê½ºÜÀàËÆ£¬µ±È»£¬¿ÉÒÔʹÓá°#¡±½«µÚÒ»¸ö²ÎÊýͬʱÉùÃ÷ΪÍⲿ²ÎÊýÃû£¬Ò²¿ÉÒÔʹÓá°_¡±½«ÆäËû²ÎÊýÉèÖÃΪ·ÇÍⲿ²ÎÊýÃû£©¡£µ«ÊÇ£¬¶ÔÓÚº¯Êý£¬Ä¬ÈÏÇé¿öÏÂÖ»ÓÐĬÈϲÎÊý¼ÈÊǾֲ¿²ÎÊýÓÖÊÇÍⲿ²ÎÊý£¬ÆäËû²ÎÊý¶¼ÊǾֲ¿²ÎÊý¡£

2.¹¹Ôì·½·¨µÄËùÓвÎÊýĬÈÏÇé¿öϼÈÊÇÍⲿ²ÎÊýÓÖÊǾֲ¿²ÎÊý£»

3.SwiftÖеĹ¹Ôì·½·¨·ÖΪ¡°Ö¸¶¨¹¹Ôì·½·¨¡±ºÍ¡°±ãÀû¹¹Ôì·½·¨£¨convenience£©¡±£¬Ö¸¶¨¹¹Ôì·½·¨ÊÇÖ÷ÒªµÄ¹¹Ôì·½·¨£¬¸ºÔð³õʼ»¯ËùÓд洢ÊôÐÔ£¬¶ø±ãÀû¹¹Ôì·½·¨ÊǸ¨Öú¹¹Ôì·½·¨£¬Ëüͨ¹ýµ÷ÓÃÖ¸¶¨¹¹Ôì·½·¨²¢Ö¸¶¨Ä¬ÈÏÖµµÄ·½Ê½À´¼ò»¯¶à¸ö¹¹Ôì·½·¨µÄ¶¨Ò壬µ«ÊÇÔÚÒ»¸öÀàÖÐÖÁÉÙÓÐÒ»¸öÖ¸¶¨¹¹Ôì·½·¨¡£

ϱê½Å±¾

ϱê½Å±¾ÊÇÒ»ÖÖ·ÃÎʼ¯ºÏµÄ¿ì½Ý·½Ê½£¬ÀýÈ磺var a:[string],ÎÒÃǾ­³£Ê¹ÓÃa[0]¡¢a[1]ÕâÖÖ·½Ê½·ÃÎÊaÖеÄÔªËØ£¬0ºÍ1ÔÚÕâÀï¾ÍÊÇÒ»¸öË÷Òý£¬Í¨¹ýÕâÖÖ·½Ê½·ÃÎÊ»òÕßÉèÖü¯ºÏÖеÄÔªËØÔÚSwiftÖгÆÖ®Îª¡°Ï±ê½Å±¾¡±£¨ÀàËÆÓÚC#ÖеÄË÷ÒýÆ÷£©¡£´Ó¶¨ÒåÐÎʽÉÏͨ¹ý¡°subscript¡±¹Ø¼ü×ÖÀ´¶¨ÒåÒ»¸öϱê½Å±¾£¬ºÜÏñ·½·¨µÄ¶¨Ò壬µ«ÊÇÔÚʵÏÖÉÏͨ¹ýgetter¡¢setterʵÏÖ¶ÁдÓÖÀàËÆÓÚÊôÐÔ¡£¼ÙÉèÓÃRecord±íʾһÌõ¼Ç¼£¬ÆäÖÐÓжàÁУ¬ÏÂÃæÊ¾ÀýÖÐÑÝʾÁËÈçºÎʹÓÃϱê½Å±¾·ÃÎʲ¢ÉèÖÃijһÁеÄÖµ¡£


class Record {

//¶¨ÒåÊôÐÔ£¬¼ÙÉèstoreÊÇRecordÄÚ²¿µÄ´æ´¢½á¹¹

var store:[String:String]

init(data:[String:String]){

self.store=data

}

//ϱê½Å±¾£¨×¢ÒâÒ²¿ÉÒÔʵÏÖÖ»ÓÐgetterµÄÖ»¶Áϱê½Å±¾£©

subscript(index:Int)->String{

get{

var key=sorted(Array(self.store.keys))[index]

return self.store[key]!

}

set{

var key=sorted(Array(self.store.keys))[index]

self.store[key]=newValue //newValue²ÎÊýÃû¿ÉÒÔÏñÊôÐÔÒ»ÑùÖØÐÂ×Ô¶¨Òå

}

}

//ϱê½Å±¾£¨ÖØÔØ£©

subscript(key:String)->String{

get{

return store[key]!

}

set{

store[key]=newValue

}

}

}

var r=Record(data:["name":"kenshin","sex":"male"])

println("r[0]=\(r[0])") //½á¹û£ºr[0]=kenshin

r["sex"]="female"

println(r[1]) //½á¹û£ºfemale

¼Ì³Ð

ºÍObjCÒ»Ñù£¬SwiftÒ²Êǵ¥¼Ì³ÐµÄ£¨¿ÉÒÔʵÏÖ¶à¸öЭÒ飬´ËʱЭÒé·ÅÔÚºóÃæ£©£¬×ÓÀà¿ÉÒÔµ÷Óø¸ÀàµÄÊôÐÔ¡¢·½·¨£¬ÖØÐ´¸¸ÀàµÄ·½·¨£¬Ìí¼ÓÊôÐÔ¼àÊÓÆ÷£¬ÉõÖÁ¿ÉÒÔ½«Ö»¶ÁÊôÐÔÖØÐ´³É¶ÁдÊôÐÔ¡£


class Person {

var firstName:String,lastName:String

var age:Int=0

var fullName:String{

get{

return firstName+" "+lastName

}

}

init(firstName:String,lastName:String){

self.firstName=firstName

self.lastName=lastName

}

func showMessage(){

println("name=\(fullName),age=\(age)")

}

//ͨ¹ýfinalÉùÃ÷£¬×ÓÀàÎÞ·¨ÖØÐ´

final func sayHello(){

println("hello world.")

}

}

class Student: Person {

//ÖØÐ´ÊôÐÔ¼àÊÓÆ÷

override var firstName:String{

willSet{

println("oldValue=\(firstName)")

}

didSet{

println("newValue=\(firstName)")

}

}

var score:Double

//×ÓÀàÖ¸¶¨¹¹Ôì·½·¨Ò»¶¨Òªµ÷Óø¸À๹Ôì·½·¨

//²¢ÇÒ±ØÐëÔÚ×ÓÀà´æ´¢ÊôÐÔ³õʼ»¯Ö®ºóµ÷Óø¸À๹Ôì·½·¨

init(firstName:String,lastName:String, score:Double){

self.score=score

super.init(firstName: firstName, lastName: lastName)

}

convenience init(){

self.init(firstName:"",lastName:"",score:0)

}

//½«Ö»¶ÁÊôÐÔÖØÐ´³ÉÁË¿ÉдÊôÐÔ

override var fullName:String{

get{

return super.fullName;

}

set{

let array=split(newValue, maxSplit: Int.max, allowEmptySlices: false, isSeparator: { $0 == "." })

if array.count == 2 {

firstName=array[0]

lastName=array[1]

}

}

}

//ÖØÐ´·½·¨

override func showMessage() {

println("name=\(fullName),age=\(age),score=\(score)")

}

}

var p=Student()

p.firstName="kenshin"

ÔÚʹÓÃObjC¿ª·¢Ê±init¹¹Ôì·½·¨²¢²»°²È«£¬Ê×ÏÈÎÞ·¨±£Ö¤init·½·¨Ö»µ÷ÓÃÒ»´Î£¬Æä´ÎÔÚinitÖв»ÄÜ·ÃÎÊÊôÐÔ¡£µ«ÊÇÕâЩÍêÈ«ÒÀ¿¿ÎĵµÔ¼¶¨£¬±àÒëʱ²¢²»ÄÜ·¢ÏÖÎÊÌ⣬³ö´í¼ì²âÊDZ»¶¯µÄ¡£ÔÚSwiftÖй¹Ôì·½·¨(init)ÓÐÁ˸üΪÑϸñµÄ¹æ¶¨£º¹¹Ôì·½·¨Ö´ÐÐÍê֮ǰ±ØÐë±£Ö¤ËùÓд洢ÊôÐÔ¶¼ÓÐÖµ¡£ÕâÒ»µã²»½öÔÚµ±Ç°ÀàÖбØÐë×ñÑ­£¬ÔÚÕû¸ö¼Ì³Ð¹ØÏµÖÐÒ²±ØÐë±£Ö¤£¬Òò´Ë¾ÍÓÐÁËÈçϵĹ涨£º

1.×ÓÀàµÄÖ¸¶¨¹¹Ôì·½·¨±ØÐëµ÷Óø¸À๹Ôì·½·¨£¬²¢È·±£µ÷Ó÷¢ÉúÔÚ×ÓÀà´æ´¢ÊôÐÔ³õʼ»¯Ö®ºó¡£¶øÇÒÖ¸¶¨¹¹Ôì·½·¨²»Äܵ÷ÓÃͬһ¸öÀàÖÐµÄÆäËûÖ¸¶¨¹¹Ôì·½·¨£»

2.±ãÀû¹¹Ôì·½·¨±ØÐëµ÷ÓÃͬһ¸öÀàÖÐµÄÆäËûÖ¸¶¨¹¹Ôì·½·¨£¨¿ÉÒÔÊÇÖ¸¶¨¹¹Ôì·½·¨»òÕß±ãÀû¹¹Ôì·½·¨£©£¬²»ÄÜÖ±½Óµ÷Óø¸À๹Ôì·½·¨£¨ÓÃÒÔ±£Ö¤×îÖÕÒÔÖ¸¶¨¹¹Ôì·½·¨½áÊø£©£»

3.Èç¹û¸¸Àà½öÓÐÒ»¸öÎ޲ι¹Ôì·½·¨£¨²»¹ÜÊÇ·ñ°üº¬±ãÀû¹¹Ôì·½·¨£©£¬×ÓÀàµÄ¹¹Ôì·½·¨Ä¬ÈϾͻá×Ô¶¯µ÷Óø¸ÀàµÄÎ޲ι¹Ôì·½·¨£¨ÕâÖÖÇé¿öÏ¿ÉÒÔ²»ÓÃÊÖ¶¯µ÷Óã©£»

4.³£Á¿ÊôÐÔ±ØÐëĬÈÏÖ¸¶¨³õʼֵ»òÕßÔÚµ±Ç°ÀàµÄ¹¹Ôì·½·¨Öгõʼ»¯£¬²»ÄÜÔÚ×ÓÀ๹Ôì·½·¨Öгõʼ»¯£»

ЭÒé

ЭÒéÊǶÔʵÀýÐÐΪµÄÒ»ÖÖÔ¼Êø£¬ºÍObjCÀàËÆ£¬ÔÚSwiftÖпÉÒÔ¶¨ÒåÊôÐԺͷ½·¨£¨ObjCÖÐÖ®ËùÒÔÄܶ¨ÒåÊôÐÔÊÇÒòΪ@propertyµÄ±¾ÖʾÍÊÇsetter¡¢getter·½·¨£©¡£ºÍÆäËûÓïÑÔ²»Í¬µÄÊÇSwiftÖеÄЭÒé²»½öÏÞÓÚÀàµÄʵÏÖ£¬ËüͬÑù¿ÉÒÔÓ¦ÓÃÓÚö¾Ù¡¢½á¹¹Ì壨Èç¹ûÖ»Ï뽫һ¸öЭÒéÓ¦ÓÃÓÚÀ࣬¿ÉÒÔÔÚ¶¨ÒåЭÒéʱÔÚºóÃæÌí¼Óclass¹Ø¼ü×ÖÀ´ÏÞÖÆÆäÓ¦Ó÷¶Î§£©¡£


protocol Named{

//¶¨ÒåÒ»¸öʵÀýÊôÐÔ

var name:String { get set }

//¶¨ÒåÒ»¸öÀàÐÍÊôÐÔ

static var className:String { get }

//¶¨Òå¹¹Ôì·½·¨

init(name:String)

//¶¨ÒåÒ»¸öʵÀý·½·¨

func showName()

//¶¨ÒåÒ»¸öÀàÐÍ·½·¨

static func showClassName()

}

protocol Scored{

var score:Double { get set }

}

//Person×ñÑ­ÁËNamedЭÒé

class Person:Named {

//×¢Òâ´ÓNamedЭÒéÖв¢²»ÖªµÀnameÊÇ´æ´¢ÊôÐÔ»¹ÊǼÆËãÊôÐÔ£¬ÕâÀォÆä×÷Ϊ´æ´¢ÊôÐÔʵÏÖ

var name:String

var age:Int = 0

static var className:String{

return "Person"

}

//ЭÒéÖй涨µÄ¹¹Ôì·½·¨£¬±ØÐëʹÓÃrequired¹Ø¼ü×ÖÉùÃ÷£¬³ý·ÇÀàʹÓÃfinalÐÞÊÎ

required init(name:String){

self.name=name

}

//×ñÑ­showName·½·¨

func showName() {

println("name=\(name)")

}

//×ñÑ­showClassName·½·¨

static func showClassName() {

println("Class name is \"Person\"")

}

}

//Student¼Ì³ÐÓÚPerson²¢ÇÒʵÏÖÁËScoredЭÒé

class Student: Person,Scored {

var score:Double=0.0

init(name:String, score:Double){

self.score = score

super.init(name: name)

}

//ÓÉÓÚÉÏÃæ×Ô¶¨ÒåÁ˹¹Ôì·½·¨Ôò±ØÐëʵÏÖЭÒéÖй涨µÄ¹¹Ôì·½·¨

required init(name: String) {

super.init(name: name)

}

func test(){

println("\(self.name) is testing.")

}

}

var p=Person(name: "Kenshin Cui")

p.showName() //½á¹û£ºname=Kenshin Cui

println("className=\(Person.className)") //½á¹û£ºclassName=Person

Person.showClassName() //½á¹û£ºClass name is "Person"

p.age=28

var s:Named=Student(name: "Kaoru",score:100.0) //¾¡¹ÜÕâÀォsÉùÃ÷ΪNamedÀàÐÍ£¬µ«ÊÇÔËÐÐʱÈÔÈ»¿ÉÒÔÕýÈ·µÄ½âÎö£¨¶à̬£©,µ«ÊÇ×¢Òâ´Ëʱ±àÒëÆ÷²¢²»ÖªµÀsÓÐtest·½·¨£¬ËùÒÔ´Ëʱµ÷ÓÃtest()»á±¨´í

s.showName()

//ÔÚÏÂÃæµÄº¯ÊýÖÐÒªÇó²ÎÊýstu±ØÐëʵÏÖÁ½¸öЭÒé

func showMessage(stu:protocol<Named,Scored>){

println("name=\(stu.name),score=\(stu.score)")

}

var s2=Student(name: "Tom",score:99.0)

showMessage(s2) //½á¹û:name=Tom,age=99.0

//¼ì²âЭÒé

let b1 = s is Scored //ÅжÏpÊÇ·ñ×ñÑ­ÁËScoredЭÒé

if b1 {

println("s has score property.")

}

//ÀàÐÍת»¯

if let s3 = s as? Scored { //Èç¹ûsת»¯³ÉÁËScoredÀàÐÍÔò·µ»ØÊµÀý£¬·ñÔòΪnil

println("s3' score is \(s3.score)") //½á¹û£ºs3' score is 100.0

}

let s4 = s as! Scored //Ç¿ÖÆ×ª»»£¬Èç¹ûת»¯Ê§°ÜÔò±¨´í

println("s4' score is \(s4.score)") //½á¹û£ºs4' score is 100.0

1.ЭÒéÖÐËäÈ»¿ÉÒÔÖ¸¶¨ÊôÐԵĶÁд£¬µ«¼´Ê¹Ð­ÒéÖй涨ÊôÐÔÊÇÖ»¶ÁµÄµ«ÔÚʹÓÃʱҲ¿ÉÒÔ½«ÆäʵÏֳɿɶÁдµÄ£»

2.SwiftµÄЭÒéÖпÉÒÔÔ¼¶¨ÊôÐÔÊÇʵÀýÊôÐÔ»¹ÊÇÀàÐÍÊôÐÔ¡¢ÊǶÁдÊôÐÔ»¹ÊÇÖ»¶ÁÊôÐÔ£¬µ«ÊDz»ÄÜÔ¼ÊøÆäÊÇ´æ´¢ÊôÐÔ»¹ÊǼÆËãÊôÐÔ;

3.ЭÒéÖеÄÀàÐÍÊôÐÔºÍÀàÐÍ·½·¨Ê¹ÓÃstaticÐÞÊζø²»ÊÇclass£¨¾¡¹Ü¶ÔÓÚÀàµÄʵÏÖÖÐÀàÐÍÊôÐÔ¡¢ÀàÐÍ·½·¨Ê¹ÓÃclassÐÞÊΣ©;

4.ЭÒéÖÐÔ¼¶¨µÄ·½·¨Ö§³Ö¿É±ä²ÎÊý£¬µ«ÊDz»Ö§³ÖĬÈϲÎÊý;

5.ЭÒéÖÐÔ¼¶¨µÄ¹¹Ôì·½·¨£¬ÔÚʵÏÖʱÈç¹û²»ÊÇfinalÀàÔò±ØÐëʹÓÃrequireÐÞÊΣ¨ÒÔ±£Ö¤×ÓÀàÈç¹ûÐèÒª×Ô¶¨Òå¹¹Ôì·½·¨Ôò±ØÐ븲¸Ç¸¸ÀàʵÏÖµÄЭÒé¹¹Ôì·½·¨£¬Èç¹û×ÓÀ಻ÐèÒª×Ô¶¨Òå¹¹Ôì·½·¨Ôò²»±Ø£©;

6.Ò»¸öЭÒé¿ÉÒԼ̳ÐÓÚÁíÍâÒ»¸ö»ò¶à¸öЭÒ飬һ¸öÀàÖ»Äܼ̳ÐÓÚÒ»¸öÀ൫¿ÉÒÔʵÏÖ¶à¸öЭÒ飻

7.ЭÒé±¾Éí¾ÍÊÇÒ»ÖÖÀàÐÍ£¬ÕâÒ²ÌåÏÖ³ýÁËÃæÏò¶ÔÏóµÄ¶àÌ¬ÌØÕ÷£¬¿ÉÒÔʹÓöà¸öЭÒéµÄºÏ³ÉÀ´Ô¼ÊøÒ»¸öʵÀý²ÎÊý±ØÐëʵÏÖij¼¸¸öЭÒ飻

À©Õ¹

SwiftÖеÄÀ©Õ¹¾ÍÀàËÆÓÚObjCÖеķÖÀࣨÊÂʵÉÏÔÚÆäËû¸ß¼¶ÓïÑÔÖиü¶àµÄ³ÆÖ®ÎªÀ©Õ¹¶ø·Ç·ÖÀࣩ£¬µ«ÊÇËüÒª±È·ÖÀàÇ¿´óµÄ¶à£¬Ëü²»½ö¿ÉÒÔÀ©Õ¹À໹¿ÉÒÔÀ©Õ¹Ð­Ò顢ö¾Ù¡¢½á¹¹Ì壬ÁíÍâÀ©Õ¹Ò²²»¾ÖÏÞÓÚÀ©Õ¹·½·¨£¨ÊµÀý·½·¨»òÕßÀàÐÍ·½·¨£©£¬»¹¿ÉÒÔÀ©Õ¹±ãÀû¹¹Ôì·½·¨¡¢¼ÆËãÊôÐÔ¡¢Ï±ê½Å±¾¡¢


class Person {

var firstName:String,lastName:String

var age:Int=0

var fullName:String{

get{

return firstName+" "+lastName

}

}

init(firstName:String,lastName:String){

self.firstName=firstName

self.lastName=lastName

}

func showMessage(){

println("name=\(fullName),age=\(age)")

}

}

extension Person{

//Ö»ÄÜÀ©Õ¹±ãÀû¹¹Ôì·½·¨£¬²»ÄÜÀ©Õ¹Ö¸¶¨¹¹Ôì·½·¨

convenience init(){

self.init(firstName:"",lastName:"")

}

//Ö»ÄÜÀ©Õ¹¼ÆËãÊôÐÔ£¬ÎÞ·¨À©Õ¹´æ´¢ÊôÐÔ

var personInfo:String{

return "firstName=\(firstName),lastName=\(lastName),age=\(age)";

}

//À©Õ¹ÊµÀý·½·¨

func sayHello(){

println("hello world.")

}

//ǶÌ×ÀàÐÍ

enum SkinColor{

case Yellow,White,Black

}

//À©Õ¹ÀàÐÍ·½·¨

static func skin()->[SkinColor]{

return [.Yellow,.White,.Black]

}

}

var p=Person()

p.firstName="Kenshin"

p.lastName="Cui"

p.age=28

println(p.personInfo) //½á¹û£ºfirstName=Kenshin,lastName=Cui,age=28

p.sayHello() //½á¹û£ºhello world.

Person.skin()

ö¾ÙºÍ½á¹¹Ìå

½á¹¹Ìå

½á¹¹ÌåºÍÀàÊǹ¹Ô츴ÔÓÊý¾ÝÀàÐÍʱ³£ÓõĹ¹ÔìÌ壬ÔÚÆäËû¸ß¼¶ÓïÑÔÖнṹÌåÏà±ÈÓÚÀàÒª¼òµ¥µÄ¶à£¨ÔڽṹÌåÄÚ²¿½ö½öÄܶ¨ÒåһЩ¼òµ¥³ÉÔ±£©£¬µ«ÊÇÔÚSwiftÖнṹÌåºÍÀàµÄ¹ØÏµÒª½ôÃܵĶ࣬ÕâÒ²ÊÇΪʲô½«½á¹¹Ìå·Åµ½ºóÃæÀ´ËµµÄÔ­Òò¡£SwiftÖеĽṹÌå¿ÉÒÔ¶¨ÒåÊôÐÔ¡¢·½·¨¡¢Ï±ê½Å±¾¡¢¹¹Ôì·½·¨£¬Ö§³ÖÀ©Õ¹£¬¿ÉÒÔʵÏÖЭÒéµÈµÈ£¬ºÜ¶àÀà¿ÉÒÔʵÏֵŦÄܽṹÌå¶¼ÄÜʵÏÖ£¬µ«ÊǽṹÌåºÍÀàÓÐ×ű¾ÖÊÇø±ð£ºÀàÊÇÒýÓÃÀàÐÍ£¬½á¹¹ÌåÊÇÖµÀàÐÍ¡£


struct Person {

var firstName:String

var lastName:String

var fullName:String{

return firstName + " " + lastName

}

var age:Int=0

//¹¹Ô캯Êý£¬Èç¹û¶¨ÒåÁ˹¹Ôì·½·¨Ôò²»»áÔÙ×Ô¶¯Éú³ÉĬÈϹ¹Ô캯Êý

// init(firstName:String,lastName:String){

// self.firstName=firstName

// self.lastName=lastName

// }

func showMessage(){

println("firstName=\(firstName),lastName=\(lastName),age=\(age)")

}

//×¢Òâ¶ÔÓÚÀàÖÐÉùÃ÷ÀàÐÍ·½·¨Ê¹Óùؼü×ÖclassÐÞÊΣ¬µ«½á¹¹ÌåÀïʹÓÃstaticÐÞÊÎ

static func showStructName(){

println("Struct name is \"Person\"")

}

}

//×¢ÒâËùÓнṹÌåĬÈÏÉú³ÉÒ»¸öȫԱÖðÒ»¹¹Ô캯Êý,Ò»µ©×Ô¶¨Òå¹¹Ôì·½·¨£¬Õâ¸öĬÈϹ¹Ôì·½·¨½«²»»á×Ô¶¯Éú³É

var p=Person(firstName: "Kenshin", lastName: "Cui", age: 28)

println(p.fullName) //½á¹û£ºKenshin Cui

p.showMessage() //½á¹û£ºfirstName "Kenshin", lastName "Cui", age 28

Person.showStructName() //½á¹û£ºStruct name is "Person"

//ÓÉÓڽṹÌ壨°üÀ¨Ã¶¾Ù£©ÊÇÖµÀàÐÍËùÒÔ¸³Öµ¡¢²ÎÊý´«µÝʱֵ»á±»¿½±´(ËùÒÔÏÂÃæµÄʵÀýÖÐp2Ð޸ĺóp²¢Î´Ð޸쬵«ÊÇÈç¹ûÊÇÀàÔòÇé¿ö²»Í¬)

var p2 = p

p2.firstName = "Tom"

println(p2.fullName) //½á¹û£ºTom Cui

println(p.fullName) //½á¹û£ºKenshin Cui

1.ĬÈÏÇé¿öÏÂÈç¹û²»×Ô¶¨Òå¹¹Ô캯ÊýÄÇô½«×Ô¶¯Éú³ÉÒ»¸öÎ޲ι¹Ô캯ÊýºÍÒ»¸öȫԱµÄÖðÒ»¹¹Ô캯Êý£»

2.ÓÉÓڽṹÌåÊÇÖµÀàÐÍ£¬ËùÒÔËüËäÈ»Óй¹Ô캯Êýµ«ÊÇûÓÐÎö¹¹º¯Êý£¬ÄÚ´æÊÍ·Åϵͳ×Ô¶¯¹ÜÀí²»ÐèÒª¿ª·¢ÈËÔ±¹ý¶à¹Ø×¢£»

3.ÀàµÄÀàÐÍ·½·¨Ê¹ÓÃclassÐÞÊΣ¨ÒÔ±ã×ÓÀà¿ÉÒÔÖØÐ´£©£¬¶ø½á¹¹Ì塢ö¾ÙµÄÀàÐÍ·½·¨Ê¹ÓÃstaticÐÞÊÎ(²¹³ä£ºÀà·½·¨Ò²¿ÉÒÔʹÓÃstaticÐÞÊΣ¬µ«ÊDz»ÊÇÀàÐÍ·½·¨¶øÊǾ²Ì¬·½·¨£»ÁíÍâÀàµÄ´æ´¢ÊôÐÔÈç¹ûÊÇÀàÐÍÊôÐÔʹÓÃstaticÐÞÊΣ¬¶øÀàÖеļÆËãÊôÐÔÈç¹ûÊÇÀàÐÍÊôÐÔʹÓÃclassÐÞÊÎÒÔ±ã¿ÉÒÔ±»×ÓÀàÖØÐ´£»»»¾ä»°Ëµclass×÷Ϊ¡°ÀàÐÍ·¶Î§×÷ÓÃÓò¡±À´Àí½âʱֻÓÐÔÚÀàÖж¨ÒåÀàÐÍ·½·¨»òÕßÀàÐͼÆËãÊôÐÔʱʹÓã¬ÆäËûÇé¿öʹÓÃstaticÐÞÊÎ[°üÀ¨½á¹¹Ì塢ö¾Ù¡¢Ð­ÒéºÍÀàÐÍ´æ´¢ÊôÐÔ])£»

ÀàµÄʵÀýͨ³£³ÆÖ®Îª¡°¶ÔÏó¡±£¬¶øÔÚSwiftÖнṹÌåÒ²¿ÉÒÔÓÐʵÀý£¬Òò´Ë¶ÔÓںܶà¶þÕß¶¼¿ÉÒÔʵÏֵŦÄÜ£¬ÔÚÎÄÖгÆÖ®ÎªÊµÀý¶øÃ»ÓÐʹÓöÔÏóµÄ¸ÅÄî¡£

ö¾Ù

ÔÚÆäËûÓïÑÔÖÐö¾Ù±¾ÖʾÍÊÇÒ»¸öÕûÐΣ¬Ö»Êǽ«Õâ×éÏà¹ØµÄÖµ×éÖ¯ÆðÀ´²¢Ö¸¶¨Ò»¸öÓÐÒâÒåµÄÃû³Æ¡£µ«ÊÇÔÚSwiftÖÐö¾Ù²»Ç¿µ÷Ò»¸öö¾Ù³ÉÔ±±ØÐë¶ÔÓ¦Ò»¸öÕûÐÎÖµ£¨µ±È»Èç¹ûÓбØÒªÈÔÈ»¿ÉÒÔÖ¸¶¨£©£¬²¢ÇÒö¾ÙÀàÐ͵ĿÉÒÔÊÇÕûÐΡ¢¸¡µãÐÍ¡¢×Ö·û¡¢×Ö·û´®¡£Ê×ÏÈ¿´Ò»ÏÂö¾ÙµÄ»ù±¾Ê¹Óãº

//×¢ÒâSwiftÖеÄö¾ÙĬÈϲ¢Ã»ÓжÔÓ¦µÄÕûÐÎÖµ£¬caseÓÃÀ´¶¨ÒåÒ»ÐÐеijÉÔ±£¬Ò²¿ÉÒÔ½«¶à¸öÖµ¶¨Ò嵽ͬһÐÐʹÓöººÅ·Ö¸ô£¬ÀýÈ磺case Spring,Summer,Autumn,Winter

enum Season{

case Spring

case Summer

case Autumn

case Winter

}

var s=Season.Spring

//Ò»µ©È·¶¨ÁËö¾ÙÀàÐÍ£¬¸³ÖµÊ±¿ÉÒÔÈ¥µôÀàÐÍʵÏÖ¼òд

s = .Summer

switch s {

case .Spring: //ÓÉÓÚSwiftµÄ×Ô¶¯Íƶϣ¬ÕâÀïÈÔÈ»¿ÉÒÔ²»Ö¸Ã÷ÀàÐÍ

println("spring")

case .Summer:

println("summer")

case .Autumn:

println("autumn")

default:

println("winter")

}

ÊÂʵÉÏSwiftÖÐÒ²¿ÉÒÔÖ¸¶¨Ò»¸öÖµºÍö¾Ù³ÉÔ±¶ÔÓ¦£¬¾ÍÏñÆäËûÓïÑÔÒ»Ñù£¨Í¨³£ÆäËûÓïÑÔµÄö¾ÙĬÈϾÍÊÇÕûÐΣ©£¬µ«ÊÇSwiftÓÖ²»¾ÖÏÞÓÚÕûÐΣ¬Ëü¿ÉÒÔÊÇÕûÐΡ¢¸¡µãÐÍ¡¢×Ö·û´®¡¢×Ö·û£¬µ«ÊÇԭʼֵ±ØÐëÊÇÒ»Ö̶ֹ¨ÀàÐͶø²»ÄÜ´æ´¢¶à¸ö²»Í¬µÄÀàÐÍ£¬Í¬Ê±Èç¹ûԭʼֵΪÕûÐÎÔò»áÏñÆäËûÓïÑÔÒ»ÑùĬÈÏ»á×Ô¶¯µÝÔö¡£


//Ö¸¶¨Ô­Ê¼Öµ(ÕâÀﶨÒå³ÉÁËÕûÐÎ)

enum Season:Int{

case Spring=10 //ÆäËûÖµ»áĬÈϵÝÔö,ÀýÈçSummerĬÈÏΪ11£¬Èç¹û´Ë´¦Ò²²»Ö¸¶¨Öµ»á´Ó0¿ªÊ¼ÒÀ´ÎµÝÔö

case Summer

case Autumn

case Winter

}

var summer=Season.Summer

//ʹÓÃrawValue·ÃÎÊԭʼֵ

println("summer=\(summer),rawValue=\(summer.rawValue)")

//ͨ¹ýԭʼֵ´´½¨Ã¶¾ÙÀàÐÍ£¬µ«ÊÇ×¢ÒâËüÊÇÒ»¸ö¿ÉÑ¡ÀàÐÍ

var autumn=Season(rawValue: 12)

//¿ÉÑ¡ÀàÐͰó¶¨

if let newAutumn=autumn{

println("summer=\(newAutumn),rawValue=\(newAutumn.rawValue)")

}

Èç¹ûÒ»¸öö¾ÙÀàÐÍÄܹ»ºÍһЩÆäËûÀàÐ͵ÄÊý¾ÝÒ»Æð´æ´¢ÆðÀ´ÍùÍù»áºÜÓÐÓã¬ÒòΪÕâ¿ÉÒÔÈÃÄã´æ´¢Ã¶¾ÙÀàÐÍÖ®ÍâµÄÐÅÏ¢£¨ÀàËÆÓÚÆäËûÓïÑÔÖжÔÏóµÄtagÊôÐÔ£¬µ«ÊÇÓÖ¶àÁËÁé»îÐÔ£©£¬ÕâÔÚÆäËûÓïÑÔ¼¸ºõÊDz»¿ÉÄÜʵÏֵ쬵«ÊÇÔÚSwiftÖÐÈ´¿ÉÒÔ×öµ½£¬ÕâÔÚSwiftÖгÆÎªÃ¶¾ÙÀàÐÍÏà¹ØÖµ¡£Òª×¢ÒâµÄÊÇÏà¹ØÖµ²¢²»ÊÇԭʼֵ£¬Ô­Ê¼ÖµÐèÒªÊÂÏÈ´æ´¢²¢ÇÒÖ»ÄÜÊÇͬһÖÖÀàÐÍ£¬µ«ÊÇÏà¹ØÖµÖ»Óд´½¨Ò»¸ö»ùÓÚö¾ÙµÄ±äÁ¿»òÕß³£Á¿Ê±²Å»áÖ¸¶¨£¬²¢ÇÒÀàÐÍ¿ÉÒÔ²»Í¬£¨Ô­Ê¼Öµ¸üÏñÆäËûÓïÑÔµÄö¾ÙÀàÐÍ£©¡£


//Ïà¹ØÖµ

enum Color{

case RGB(String) //×¢ÒâΪÁË·½±ãÑÝʾÕâÀïûÓж¨Òå³ÉÈý¸öIntÀàÐÍ£¨ÀýÈ磺 RGB(Int,Int,Int)£©¶øÊ¹ÓÃ16½øÖÆ×Ö·û´®ÐÎʽ

case CMYK(Float,Float,Float,Float)

case HSB(Int,Int,Int)

}

var red=Color.RGB("#FF0000")

var green=Color.CMYK(0.61, 0.0, 1.0, 0.0)

var blue=Color.HSB(240, 100, 100)

switch red {

case .RGB(let colorStr):

println("colorStr=\(colorStr)")

case let .CMYK(c,m,y,k):

println("c=\(c),m=\(m),y=\(y),k=\(k)")

case let .HSB(h,s,b):

println("h=\(h),s=\(s),b=\(b)")

}

ÉÏÃæÌáµ½Æäʵö¾ÙÒ²ÓÐһЩÀàÐͺͽṹÌåµÄÌØÐÔ£¬ÀýÈç¼ÆËãÊôÐÔ£¨°üÀ¨ÀàÐÍÊôÐÔ£¬Ã¶¾ÙÖ»Äܶ¨Ò弯ËãÊôÐÔ²»Äܶ¨Òå´æ´¢ÊôÐÔ£¬´æ´¢ÊôÐÔÖ»ÄÜÓ¦ÓÃÓÚÀàºÍ½á¹¹Ì壩¡¢¹¹Ôì·½·¨£¨ÆäʵÉÏÃæÊ¹ÓÃԭʼֵ´´½¨Ã¶¾ÙµÄÀý×Ó¾ÍÊÇÒ»¸ö¹¹Ôì·½·¨£©¡¢·½·¨£¨ÊµÀý·½·¨¡¢ÀàÐÍ·½·¨£©¡¢Ï±ê½Å±¾ ¡£


enum Season:Int{

case Spring=0 ,Summer,Autumn,Winter

//¶¨Ò弯ËãÊôÐÔ

var tag:Int{

return self.rawValue

}

//ÀàÐÍÊôÐÔ

static var enumName:String{

return "Season"

}

// //¶¨Òå¹¹Ôì·½·¨£¬×¢ÒâÔÚö¾ÙµÄ¹¹Ô캯ÊýÖÐÔò±ØÐë±£Ö¤selfÓÐÖµ£¨ÕýÈçÀàµÄ¹¹Ôì·½·¨±ØÐë±£Ö¤Æä´æ´¢ÊôÐÔÓÐÖµÒ»Ñù£©

// init(prefix:String){

// switch prefix.lowercaseString {

// case "sp":

// self = .Spring

// case "su":

// self = .Summer

// case "au":

// self = .Autumn

// default:

// self = .Winter

// }

// }

//ÆäʵÉÏÃæµÄ¹¹ÔìÆ÷ÓÐЩ²»ºÏÀí£¬ÄǾÍÊÇdefault¾ÍÊÇWinter£¬ÊÂʵÉÏÕâÀ๹ÔìÆ÷¿ÉÄÜ´«ÈκβÎÊý£¬´Ëʱ¿ÉÒÔʹÓÿÉʧ°Ü¹¹Ô캯ÊýÀ´½â¾ö

//¿Éʧ°Ü¹¹Ô캯Êý·µ»Ønil£¨¾¡¹ÜSwiftÖй¹Ô캯ÊýÊDz»·µ»ØÖµµÄ£¬µ«ÊÇ´ËʱԼ¶¨·µ»Ønil´ú±í¹¹Ôìʧ°Ü£©

init?(prefix:String){

switch prefix.lowercaseString {

case "sp":

self = .Spring

case "su":

self = .Summer

case "au":

self = .Autumn

case "wi":

self = .Winter

default:

return nil

}

}

//¶¨ÒåʵÀý·½·¨

func showMessage(){

println("rowValue=\(self.rawValue)")

}

//¶¨ÒåÀàÐÍ·½·¨

static func showEnumName(){

println("Enum name is \"Season\"")

}

}

var summer=Season.Summer

println(summer.tag) //½á¹û£º1

println(Season.enumName) //½á¹û£ºSeason

Season.showEnumName() //½á¹û£ºEnum name is "Season"

summer.showMessage() //½á¹û£ºrowValue=1

if let spring = Season(prefix: "au") { //¿ÉÑ¡°ó¶¨£¬¹¹Ô캯Êý·µ»ØÖµ¿ÉÄÜΪnil

println(spring.tag) //½á¹û£º2

}

·ºÐÍ

·ºÐÍ¿ÉÒÔÈÃÄã¸ù¾ÝÐèÇóʹÓÃÒ»ÖÖ³éÏóÀàÐÍÀ´Íê³É´úÂ붨Ò壬ÔÚʹÓÃʱ²ÅÕæÕýÖªµÀÆä¾ßÌåÀàÐÍ¡£ÕâÑùÒ»À´¾ÍºÃÏñÔÚ¶¨ÒåʱʹÓÃÒ»¸öռλ·û×öÒ»¸öÄ£°å£¬Êµ¼Êµ÷ÓÃʱÔÙ½øÐÐÄ£°åÌ×Óã¬ËùÒÔÔÚC++ÖÐÒ²³ÆÎª¡°Ä£°å¡±¡£·ºÐÍÔÚSwiftÖб»¹ã·ºÓ¦Óã¬ÉÏÃæ½éÉܵÄArray<>¡¢Dictionary<>ÊÂʵÉ϶¼ÊÇ·ºÐ͵ÄÓ¦Óá£Í¨¹ýÏÂÃæµÄÀý×Ó¼òµ¥¿´Ò»Ï·ºÐͲÎÊýºÍ·ºÐÍÀàÐ͵ÄʹÓá£


/*·ºÐͲÎÊý*/

//Ìí¼ÓÁËÔ¼ÊøÌõ¼þµÄ·ºÐÍ£¨´ËʱT±ØÐëʵÏÖEquatableЭÒ飩

func isEqual<T:Equatable>(a:T,b:T)->Bool{

return a == b

}

var a:Int=1,b:Int=2

println(isEqual(a,b)) //½á¹û£ºfalse

var c:String="abc",d:String="abc"

println(isEqual(c,d)) //½á¹û£ºtrue

/*·ºÐÍÀàÐÍ*/

struct Stack<T> {

var store:[T]=[]

//ÔڽṹÌ塢ö¾ÙÖÐÐÞ¸ÄÆä±äÁ¿ÐèҪʹÓÃmutatingÐÞÊΣ¨×¢ÒâÀ಻ÐèÒª£©

mutating func push(item:T){

store.append(item)

}

mutating func pop()->T{

return store.removeLast()

}

}

var s = Stack<Int>()

s.push(1)

let t = s.pop()

println("t=\(t)") //½á¹û£ºt=1

//À©Õ¹·ºÐÍÀàÐÍ

extension Stack{

var top:T?{

return store.last

}

}

s.push(2)

println(s.top!) //½á¹û£º2

ÉÏÃæÑÝʾÁË·ºÐͽṹÌåÓ÷¨£¬ÆäʵÀàͬÑùÊÇÀàËÆµÄ£¬ÕâÀï¾Í²»ÔÚ׸ÊöÁË£¬µ«ÊÇÈç¹ûÓöµ½·ºÐÍЭÒéÔõô°ìÄØ£¿¼ÙÉèStack±ØÐë×ñÑ­Ò»¸öStackableЭÒ飬´Ëʱ¾Í±ØÐëÔÚЭÒéÖÐÒýÈëÒ»¸ö¹ØÁªÀàÐÍÀ´½â¾ö¡£


protocol Stackable{

//ÉùÃ÷Ò»¸ö¹ØÁªÀàÐÍ

typealias ItemType

mutating func push(item:ItemType)

mutating func pop()->ItemType;

}

struct Stack:Stackable{

var store:[T]=[]

mutating func push(item:T){

store.append(item)

}

mutating func pop()->T{

return store.removeLast()

}

}

var s = Stack()

s.push("hello")

s.push("world")

let t = s.pop()

println("t=\(t)") //½á¹û£ºt=world

   
2170 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ

ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ