1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | var num1 : Int = 0 var num2 : Int = 5 /// 1.计算属性 var num3 : Int{ return num1 + num2 } /// 2.闭包属性 private lazy var num4 : Int = { return num1 + num2 }() override func viewDidLoad() { super.viewDidLoad() print(num3) print(num4) } |
2.类属性
1 2 3 4 5 6 7 8 9 10 11 12 | class Student: NSObject { /// 类属性 static var score : Int = 0 } override func viewDidLoad() { super.viewDidLoad() Student.score = 1 print(Student.score) } |
3. 对象属性赋值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class Student: NSObject { var age:Int = 0 ///可选属性: name1 和name2一个意思 var name1:String? var name2:String? = nil } let stu = Student() stu.age = 10 stu.name1 = "1蛋" stu.name2 = "2蛋" print(stu.age) /// 可选属性 解包写法1 if let name = stu.name1{ print(name) } /// 可选属性 解包写法2 guard let name2 = stu.name2 else { return } print(name2) |
/// 可选属性 解包写法3
print(stu.name1 ?? "")
4.构造函数: init(){} 是系统默认的构造函数
自定义构造函数:A> 旧语法 可以在 init的()里面直接写上新参数,B>: 在目前3.0后需要加上convenienceclass
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | class Student: NSObject { var age:Int = 0 ///可选属性: name1 和name2一个意思 var name1:String? var name2:String? = nil /// 系统默认构造函数: 不需要写 self.init(),但是没啥用 override init() { self.name1 = "0" } /**自定义构造函数 * age 和 age1一样, * 使用conveniences需要写上self.init() */ init(age:Int, name:String) { self.age = age self.name1 = name } convenience init(age1:Int, name1:String) { self.init() self.age = age1 self.name1 = name1 } /**2.传入字典 * dict,dict1,dict2,dict3一样, * dict2,dict3在使用时还是字典使用[String:Any] */ init(dict:[String:Any]) { self.age = dict[ "age" ] as ? Int ?? 0 self.name1 = dict[ "name1" ] as ? String ?? "" } convenience init(dict1:[String:Any]) { self.init() self.age = dict1[ "age" ] as ? Int ?? 0 self.name1 = dict1[ "name1" ] as ? String ?? "" } init(dict2:Dictionary<String, Any>) { self.age = dict2[ "age" ] as ? Int ?? 0 self.name1 = dict2[ "name1" ] as ? String ?? "" } convenience init(dict3:Dictionary<String, Any>) { self.init() self.age = dict3[ "age" ] as ? Int ?? 0 self.name1 = dict3[ "name1" ] as ? String ?? "" } } let tempStu = Student(age: 10, name: "tempStu" ) print( "tempStu" ,tempStu.name1 ?? "" , tempStu.age) // tempStu tempStu 10 let tempStu1 = Student(age1: 11, name1: "tempStu1" ) print( "tempStu1" ,tempStu1.name1 ?? "" , tempStu1.age) // tempStu1 tempStu1 11 let stu = Student(dict: [ "age" :18, "name1" : "stu" ]) print( "dict" ,stu.name1 ?? "" , stu.age) // dict stu 18 let stu1 = Student(dict1: [ "age" :18, "name1" : "stu1" ]) print( "dict1" ,stu1.name1 ?? "" , stu1.age) //dict1 stu1 18 let stu2 = Student(dict2: [ "age" :18, "name1" : "stu2" ]) print( "dict2" ,stu2.name1 ?? "" , stu2.age) //dict2 stu2 18 let stu3 = Student(dict3: [ "age" :18, "name1" : "stu3" ]) print( "dict3" ,stu3.name1 ?? "" , stu3.age) //dict3 stu3 18 |
分类:
swift
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现