Àà
×÷ΪһÃÅÃæÏò¶ÔÏóÓïÑÔ£¬À൱ȻÊÇ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 |
|