博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
swift - 基础属性 - 属性写法
阅读量:6339 次
发布时间:2019-06-22

本文共 3199 字,大约阅读时间需要 10 分钟。

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.类属性

class Student: NSObject {    /// 类属性    static var score : Int = 0}    override func viewDidLoad() {        super.viewDidLoad()        Student.score = 1        print(Student.score)    }

  

3. 对象属性赋值

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  

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
) { self.age = dict2["age"] as? Int ?? 0 self.name1 = dict2["name1"] as? String ?? "" } convenience init(dict3:Dictionary
) { 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

  

    

转载于:https://www.cnblogs.com/qingzZ/p/9952430.html

你可能感兴趣的文章
JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制...
查看>>
C++ 工程实践(5):避免使用虚函数作为库的接口
查看>>
Spark入门实战系列--6.SparkSQL(下)--Spark实战应用
查看>>
Veritas推出全新技术 应对多云环境关键挑战
查看>>
统一协同工作平台用户管理、单点登录以及任务集成接口说明
查看>>
无聊时你会擦玻璃吗?《Pane In The Glass》下周一登陆Vive
查看>>
87、交换机安全VLAN攻击配置实验之PVLAN
查看>>
Java中使用 Long 表示枚举类
查看>>
修改mysql用户密码
查看>>
platform总线的probe函数调用
查看>>
读书笔记--101个shell脚本--05
查看>>
系统恢复技术
查看>>
spring 各版本 jar包下载 源码下载
查看>>
VMAX New San creation
查看>>
1.Ubuntu惊喜
查看>>
jack对linux的一些简单总结
查看>>
Redis和Memcache的区别分析
查看>>
JProfiler
查看>>
最近好像cocoapods 发出了1.0的版本。我试着去更新了一下。
查看>>
PHP Laravel 环境与框架结构
查看>>