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<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 - 基础属性 - 属性写法的更多相关文章

  1. 原创:新手布局福音!微信小程序使用flex的一些基础样式属性

    来源:新手布局福音!微信小程序使用flex的一些基础样式属性 作者:Nazi   Flex布局相对于以前我们经常所用到的布局方式要好的很多,在做微信小程序的时候要既能符合微信小程序的文档开发要求,又能 ...

  2. python基础——实例属性和类属性

    python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...

  3. 李洪强iOS开发Swift篇—09_属性

    李洪强iOS开发Swift篇—09_属性 一.类的定义 Swift与Objective-C定义类的区别 Objective-C:一般需要2个文件,1个.h声明文件和1个.m实现文件 Swift:只需要 ...

  4. css复合属性的写法

    # 复合属性也称为 "shortcut" property (快捷属性),它作用是为了简化代码,提高页面运行的效率. # 下面的内容会介绍 2 个比较常用的复合属性 "f ...

  5. 重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试

    原文:重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试 [源码下载] 重新想象 Windows 8 Store ...

  6. 【CSS】 CSS基础知识 属性和选择

    css基础知识 html的基本标签都是千篇一律的,为了能够个性化外观,就需要进行样式的调整,而css就是专门用来维护,管理样式的一种格式.在html中定义css有三种方法 1. 为标签添加style属 ...

  7. swift 学习- 11 -- 属性

    // '属性'将值跟特定的类, 结构体或枚举关联, 存储属性常量或变量作为实例的一部分,而计算属性计算(不是存储) 一个值, 计算属性可以用于 类, 结构体, 枚举, 存储属性只能用于 类 和 结构体 ...

  8. CSS基础以及属性

    一.CSS 偷个懒,啥是CSS我就不介绍啦 二.CSS语法 CSS语法:选择符{属性:属性值:属性:属性值:}选择符表示要定义样式的对象,可以是元素本身,也可以是一类元素或者制定名称的元素.属性:属性 ...

  9. 前端基础-CSS属性操作

    前端基础-CSS属性操作 css text 文本颜色:color 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - 如: #FF0000 一个RGB值 - 如: RGB( ...

  10. vue基础---计算属性和侦听器

    [一]计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example"> ...

随机推荐

  1. Delphi 三层TDataSetProvider

    在Delphi想使用三层架构或者使用TClientDataSet控件,一般都需要引用TDataSetProvider控件,现对TDataSetProvider控件的Options属性值做一个简单的分析 ...

  2. Shell编程:小白初步

    shell类型: shell的历史网络上有一大堆,这里就不介绍了.但是我们的Linux系统上是有许多种shell的我们可以查看:使用命令 vi /etc/passwd 可以查看用户对应的shell(其 ...

  3. Web安全颜色

    Web安全色产生的原因 不同的平台(Mac.PC等)有不同的调色板,不同的浏览器也有自己的调色板.这就意味着对于一幅图,显示在Mac上的Web浏览器中的图像,与它在PC上相同浏览器中显示的效果可能差别 ...

  4. easyui-datebox 只能获取当前日期以前的日期

    <td> <input id="happenTimes" name="happenTimes" class="easyui-date ...

  5. 如何查看Python对象的属性

    在Python语言中,有些库在使用时,在网络上找到的文档不全,这就需要查看相应的Python对象是否包含需要的函数或常量.下面介绍一下,如何查看Python对象中包含哪些属性,如成员函数.变量等,其中 ...

  6. Arcgis map export or print Error: Cannot map metafile into memory. Not enough memory

      Arcgis map export or print Error: Cannot map metafile into memory. Not enough memory Link: https:/ ...

  7. 神经网络中的激活函数具体是什么?为什么ReLu要好过于tanh和sigmoid function?(转)

    为什么引入激活函数? 如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层 ...

  8. (转载)jenkins 安装 SVN Publisher 后向 svn 提交代码报错: E170001: Authentication required for...

    问题描写叙述 安装并启动 jenkins 后,加入了 SVN Publisher 插件,然后在构建任务的“构建后操作”操作中加入了“Publish to Subversion repository”相 ...

  9. 获取url后面的参数的方法

    1. function GetRequest() { var url = 'http://wwww.jb51.net/?q=js'; //获取url中"?"符后的字串 if (ur ...

  10. SVM参数解析

    一.Opencv中的核函数定义(4种): 1.CvSVM::LINEAR : 线性内核,没有任何向映射至高维空间,线性区分(或回归)在原始特点空间中被完成,这是最快的选择. 2.CvSVM::POLY ...