swift篇第三期:类、枚举、结构体

前端之家收集整理的这篇文章主要介绍了swift篇第三期:类、枚举、结构体前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


首先我们来创建一个类吧,然后在里面声明属性方法

classBaseUser{
varuserName:String="swh"
varpassword:String="123"

//这里面有一个构造方法,其实就类似我们重写init方法一样,然后可以加些参数
//但是我们在声明该类的时候直接在类名后面接括号就可以了哦
init(username:String,password:String){
self.userName=username
self.password=password
}

varname:String{
//下面是set方法的两种定义
set(value){
self.userName=value
println("methodset")
}
//set{
//self.userName=newValue
//println("methodset")
//}
get{
println("methodget")
returnself.userName
}
}

functoString()->String{
return"username:\(self.userName):\(self.password)"
}
}


这时候我们来调用对应的属性方法

//声明并初始化
varuser=BaseUser(username:"kutian",password:"123456")

println(user.toString())

user.name="kutian"

println("\(user.name)\(user.password)")


接下来,我们继续创建一个类来继承之前的类

继承,跟大家想的没声明区别

classAdminUser:BaseUser{
varmanagerModel:String="炉石传说"

overridefunctoString()->String{
return"炉石传说"
}
}

varadminUser=AdminUser(username:"swh",password:"123")

println(adminUser.toString())


好啦,接下来我们创建枚举

我们可以直接赋值,也可以弄一个方法,让它返回新值

enumSuit:String{
caseSpades="黑桃",Hearts="红桃",Diamonds="方块",Clubs="梅花"
functoString()->String{
switchself{
case.Spades:
return"黑桃"
case.Hearts:
return"红桃"
case.Diamonds:
return"方块"
case.Clubs:
return"梅花"
default:
return"鬼牌"
}
}
}


然后调用枚举里面涉及到的一些方法

这里面有新的rawValue还有!是把任意nil转为正常的哦

varsuit=Suit.Hearts

println(suit.rawValue)

lettempSuit=Suit(rawValue:"梅花")

println(tempSuit!.rawValue)


我们也可以新建一个类,并在里面声明某个属性是枚举类型

好啦,我们来创建一个结构体吧

structHero{
staticvarisGirl:Bool=false
varrank:Rank
varname:CompassPointType

functoString()->String{
return"\(name):\(rank.rawValue)"
}
}


其实它跟类还是差不多的,只是它传值的时候并不涉及传地址哦

然后我们来写个协议吧

protocolSimpleProtocol{
varvalue:String{get}

functoString()->String
mutatingfuncupdate()
}

protocolBaseProtocol{
funcequal()->Bool
}

classSuperClass{
varname:String="swh"
}


接下来创建一个类来遵循并实现这个协议

classSubClss:SuperClass,SimpleProtocol,BaseProtocol{
varvalue:String="defalut"

functoString()->String{
returnvalue
}

funcupdate(){
value="newvalue"
}

funcequal()->Bool{
returnfalse
}
}


再接下来,我们再写一个扩展好了

classRect{
varwidth:Int=50
varheight:Int=100
}

extensionRect:BaseProtocol{
funcarea()->Int{
returnwidth*height
}

funcequal()->Bool{
returnheight==width
}
}

extensionInt{
functoString()->String{
return"你猜"
}
}

类和协议就比较好理解了,与O-C没有什么区别的哦


OK,就这么多咯

原文链接:https://www.f2er.com/swift/326640.html

猜你在找的Swift相关文章