OC转Swift之基础篇(五)--枚举、结构体&泛型
2017-03-27 15:14
344 查看
//枚举
enum Season:Int {
//case Spring,Summer,Autumn,Winter
case Spring=10
case Summer
case Autumn
case Winter
var tag:Int{
return
self.rawValue
}
static
var enumName:String{
return
"\(self)"
}
init?(prefix:String) {
switch prefix.lowercased() {
case
"sp":
self = .Spring
case
"su":
self = .Summer
case
"au":
self = .Autumn
case
"wi":
self = .Winter
default:
return
nil
}
}
func showMessage() {
print("rawValue=\(self.rawValue)")
}
static
func showEnumName(){
print("Enum name is \"\(self)\"")
}
}
//使用
var season =
Season.Spring
season = .Summer
season = .Autumn
season = .Winter
switch season {
case .Spring:
print("S,\(Season.Spring.rawValue)")
case .Summer:
print("S")
case .Autumn:
print("A")
default:
print("W")
}
print(season.tag,Season.enumName)
//结果:13 Season
season.showMessage() //结果:rawValue=13
Season.showEnumName() //结果:Enum name is "Season"
let autumn =
Season(rawValue:12)
if
let newAutumn=autumn{
print("\(newAutumn),\(newAutumn.rawValue)") //结果:Autumn,12
}
//结构体
struct Info {
var firstName:String
var lastName:String
var fullName:String{
return
firstName+" "+lastName
}
var age:Int =
0
func showMessage() {
print("firstName=\(firstName),lastName=\(lastName),age=\(age)")
}
static
func showStructName(){
print("Struct name is \"\(self)\"")
}
}
//使用
let info =
Info.init(firstName:
"Jonny", lastName: "Deng", age:
25)
print(info.fullName) //结果:Jonny
Deng
info.showMessage() //结果:firstName=Jonny,lastName=Deng,age=25
Info.showStructName() //结果:Struct name is "Info"
var info2 = info
info2.firstName =
"Jenny"
print("\(info2.fullName),\(info.fullName)") //结果:Jenny
Deng,Jonny Deng
//泛型
protocol Stackable {//实现协议
associatedtype ItemType
mutating
func push(item:ItemType)
mutating
func pop()->ItemType
}
struct Stack<T>:Stackable{
var store:[T] = []
mutating
func push(item:T){
store.append(item)
}
mutating
func pop()->T{
return
store.removeLast()
}
}
extension Stack{//进行拓展
var top:T?{
return
store.last
}
}
//使用
var s =
Stack<Any>()
s.push(item:
"hello")
s.push(item:
"world")
let t = s.pop()
print("t=\(t)") //结果:t=world
enum Season:Int {
//case Spring,Summer,Autumn,Winter
case Spring=10
case Summer
case Autumn
case Winter
var tag:Int{
return
self.rawValue
}
static
var enumName:String{
return
"\(self)"
}
init?(prefix:String) {
switch prefix.lowercased() {
case
"sp":
self = .Spring
case
"su":
self = .Summer
case
"au":
self = .Autumn
case
"wi":
self = .Winter
default:
return
nil
}
}
func showMessage() {
print("rawValue=\(self.rawValue)")
}
static
func showEnumName(){
print("Enum name is \"\(self)\"")
}
}
//使用
var season =
Season.Spring
season = .Summer
season = .Autumn
season = .Winter
switch season {
case .Spring:
print("S,\(Season.Spring.rawValue)")
case .Summer:
print("S")
case .Autumn:
print("A")
default:
print("W")
}
print(season.tag,Season.enumName)
//结果:13 Season
season.showMessage() //结果:rawValue=13
Season.showEnumName() //结果:Enum name is "Season"
let autumn =
Season(rawValue:12)
if
let newAutumn=autumn{
print("\(newAutumn),\(newAutumn.rawValue)") //结果:Autumn,12
}
//结构体
struct Info {
var firstName:String
var lastName:String
var fullName:String{
return
firstName+" "+lastName
}
var age:Int =
0
func showMessage() {
print("firstName=\(firstName),lastName=\(lastName),age=\(age)")
}
static
func showStructName(){
print("Struct name is \"\(self)\"")
}
}
//使用
let info =
Info.init(firstName:
"Jonny", lastName: "Deng", age:
25)
print(info.fullName) //结果:Jonny
Deng
info.showMessage() //结果:firstName=Jonny,lastName=Deng,age=25
Info.showStructName() //结果:Struct name is "Info"
var info2 = info
info2.firstName =
"Jenny"
print("\(info2.fullName),\(info.fullName)") //结果:Jenny
Deng,Jonny Deng
//泛型
protocol Stackable {//实现协议
associatedtype ItemType
mutating
func push(item:ItemType)
mutating
func pop()->ItemType
}
struct Stack<T>:Stackable{
var store:[T] = []
mutating
func push(item:T){
store.append(item)
}
mutating
func pop()->T{
return
store.removeLast()
}
}
extension Stack{//进行拓展
var top:T?{
return
store.last
}
}
//使用
var s =
Stack<Any>()
s.push(item:
"hello")
s.push(item:
"world")
let t = s.pop()
print("t=\(t)") //结果:t=world
相关文章推荐
- 站在OC的基础上快速理解Swift的类与结构体
- Swift 基础语法 <与 OC作对比>
- Swift基础语法(五)枚举、结构体与类的区别
- 黑马程序员-----------C语言基础-----------结构体·枚举
- swift基础学习(04)[闭包、函数、枚举、类和结构体]
- Swift教程_通过改造官方Sample学习Swift(三)_Swift基础(对象和类、枚举和结构、协议和扩展、泛型)
- 站在OC的基础上快速理解Swift的类与结构体
- OC转Swift之基础篇(四)--协议&扩展
- Rust语言开发基础(九)复杂数据类型:结构体,枚举,泛型
- OC基础--结构体 枚举做类成员属性
- Swift语法基础:5 - Swift的枚举和结构体
- C语言基础知识----联合 && 枚举 && 结构体
- Swift之枚举类型&结构体
- oc基础语法——(if···else语句用法)
- C语言基础六_结构体、枚举
- 黑马程序员--基础--第一篇--JDK5.0新特性泛型 静态倒入 自动拆装箱 不定项参数 增强for如循环 枚举
- 黑马程序员—Java基础加强学习笔记之枚举&反射
- 黑马程序员_java_基础加强_静态导入_反射_枚举_注解_内省_泛型
- 1.0 基础、标示符、常量、数据类型(enum 枚举,struct 结构体)、操作符、循环、数组
- swift 笔记 (十) —— 属性 (类,结构体,枚举)