Swift 数组,字典,结构体,枚举
1.数组
let types = ["none","warning","error"]//省略类型的数组声明 var menbers = [String]()//声明空数组 menbers.append("six")//添加元素 menbers += ["seven"]//添加元素 menbers.insert("one", at: 0)//指定位置添加元素 menbers[0] = "message"//通过下标修改元素 menbers[0...2] = ["message","banana","orange"]//通过区间修改元素 print(types) print(menbers) print(menbers.count)//数组个数 print(menbers.isEmpty)//数组是否为空 menbers.swapAt(1, 2)//元素之间交换 //menbers.remove(at: 2)//删除某一个元素 //menbers.removeLast()//删除最后一个元素 let addStringArr = types + menbers //数组遍历 for value in addStringArr { print("\(value)") } //元祖遍历 for (index,value) in menbers.enumerated() { print("索引:\(index) 数据:\(value)") } //过滤数组元素 let newTypes = types.filter { (item) -> Bool in return item.count < 6 } print(newTypes) //创建包含100个元素的数组 let items = Array(0..<100).map{ "条目\($0)"} print(items)
//2.0 字典 //var emptyDict = [String : Int]()//空字典 //声明一个字典 var myDict = ["name":"hangge","url":"hangge.com"] myDict["address"] = "china" //添加/修改字典 myDict.removeValue(forKey: "name")//删除某一个key myDict["name"] = nil //删除某一个key值 //字典的key,value print(myDict.keys,myDict.values) //遍历字典 for (key,value) in myDict { print("\(key):\(value)") } //顾虑字典元素 let dict2 = myDict.filter { (item) -> Bool in return item.value.count < 7 } print(dict2) //通过元祖创建字典 let duplicatesArray = [("Monday",30),("Tuesday",25),("Wednesday",27),("Sunday",29)] let dic = Dictionary(duplicatesArray, uniquingKeysWith: min) print(dic) //合并字典 var dict1 = ["one":10,"two":20] //merge 合并 let tuples = [("one",5),("three",30)] dict1.merge(tuples, uniquingKeysWith: min) print("dict:\(dict1)") //merging 合并 let dict3 = dict1.merging(tuples, uniquingKeysWith: min) print("dict2:\(dict3)") //字典不存在时,指定默认值 let dict4 = ["apple":1,"banana":2] var orange : Int if let value = dict4["orange"] { orange = value }else { orange = 0 } let longan = dict4["longan",default:0] print(orange) print(longan)
//创建一个结构体 struct BookInfo { var id : Int = 0 var name : String = "default" var authord : String = "default" } var book1 : BookInfo //默认构造器创建结构体 var book2 : BookInfo = BookInfo.init(id: 0021, name: "航哥", authord: "hanggge") book1 = book2 book2.id = 1234 print(book1,book2) //枚举 enum Compasspoint { case north case south case east case west } let directionTohead = Compasspoint.east print(directionTohead) enum Planet : Int { case mercury = 1 case venus = 2 case earth = 3 } let earthsorder = Planet.earth print(earthsorder) enum Direction { case up case down func description() -> String { switch self { case .up: return "向上" case .down: return "向下" } } } print(Direction.up.description())
//默认构造器 class Student{ var name : String = "" var number : Int = 0 } //自定义构造函数 class Person{ //雷属性 var name:String var age:Int //类构造函数 init(newName:String,newAge:Int) { self.name = newName self.age = newAge } //实例函数 func say() -> String { return "我叫MT\(name)" } } class People { //普通属性 var firstName:String = "" var lastName:String = "" var nickName:String = "" //计算属性 var fullName:String { get { return nickName + " " + firstName + " " + lastName } } //带属性监视器普通属性 var age:Int = 0 { //属性变化前 willSet{ print("will set an new value\(age) to age") } didSet{ print("age file change form \(oldValue) to \(age)") if age < 10 { nickName = "Little" }else{ nickName = "Big" } } } func toString() ->String{ return "Full name \(fullName) +_ age\(age)" } } /*结构体运用*/ struct Account { var amount:Double = 0.0 var owner:String = "" //修饰静态方法 static var interestRate:Double = 0.668 static func interestBy(amount:Double) ->Double{ return interestRate * amount } } class Account_class { var amount:Double = 0.0 var owner:String = "" class var staticProp: Double { return 0.668 } class func interestBy(amount:Double) ->Double{ return staticProp * amount } }