swift - 基础属性 - 属性写法
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 - 基础属性 - 属性写法的更多相关文章
- 原创:新手布局福音!微信小程序使用flex的一些基础样式属性
来源:新手布局福音!微信小程序使用flex的一些基础样式属性 作者:Nazi Flex布局相对于以前我们经常所用到的布局方式要好的很多,在做微信小程序的时候要既能符合微信小程序的文档开发要求,又能 ...
- python基础——实例属性和类属性
python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...
- 李洪强iOS开发Swift篇—09_属性
李洪强iOS开发Swift篇—09_属性 一.类的定义 Swift与Objective-C定义类的区别 Objective-C:一般需要2个文件,1个.h声明文件和1个.m实现文件 Swift:只需要 ...
- css复合属性的写法
# 复合属性也称为 "shortcut" property (快捷属性),它作用是为了简化代码,提高页面运行的效率. # 下面的内容会介绍 2 个比较常用的复合属性 "f ...
- 重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试
原文:重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试 [源码下载] 重新想象 Windows 8 Store ...
- 【CSS】 CSS基础知识 属性和选择
css基础知识 html的基本标签都是千篇一律的,为了能够个性化外观,就需要进行样式的调整,而css就是专门用来维护,管理样式的一种格式.在html中定义css有三种方法 1. 为标签添加style属 ...
- swift 学习- 11 -- 属性
// '属性'将值跟特定的类, 结构体或枚举关联, 存储属性常量或变量作为实例的一部分,而计算属性计算(不是存储) 一个值, 计算属性可以用于 类, 结构体, 枚举, 存储属性只能用于 类 和 结构体 ...
- CSS基础以及属性
一.CSS 偷个懒,啥是CSS我就不介绍啦 二.CSS语法 CSS语法:选择符{属性:属性值:属性:属性值:}选择符表示要定义样式的对象,可以是元素本身,也可以是一类元素或者制定名称的元素.属性:属性 ...
- 前端基础-CSS属性操作
前端基础-CSS属性操作 css text 文本颜色:color 颜色属性被用来设置文字的颜色. 颜色是通过CSS最经常的指定: 十六进制值 - 如: #FF0000 一个RGB值 - 如: RGB( ...
- vue基础---计算属性和侦听器
[一]计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example"> ...
随机推荐
- HashSet和LinkedHashSet解析
一.简介 1.Set概念 Set可以理解为集合,非常类似数据概念中的集合,集合三大特征:1.确定性:2.互异性:3.无序性,因此Set实现类也有类似的特征. 2.HashSet HashSet继承自A ...
- SecureCRT使用本地公钥 SSH 免密码登录Linux
其原理与Linux系统之间的SSH通道原理是一样的 下文中如果创建公钥的格式是:标准公钥和VanDyke私钥格式,需要用ssh-keygen -i -f 转换.如果是OpenSSH密钥格式可直接修改文 ...
- unity admob
插件地址:https://github.com/unity-plugins/Unity-Admob 2017.04.11测试使用发现GoogleMobileAds.framework有问题,导致出现U ...
- 手工获取AWR报告
AWR(Automatic Workload Repository)报告常用于Oracle数据库性能分析.熟练解读AWR报告有助于快速分析Oracle性能问题.下面主要描述如何手工获取AWR报告. 操 ...
- TFS登录时保存了用户密码,如何用其他账户登录
来源:http://blog.csdn.net/littlegreenfrog/article/details/5254633 使用TFS2008过程中,常常由于已经保存用户名和密码,却没有重新登 ...
- svn的上传冲突问题
上传报错实际是 1 . 之前上传的代码与现代码不一样 2. 上传的代码中有错误 需要先拉下来,对比删除不要的,再上传 eclipse加入svn : 1.import ---从svn检出项目---创 ...
- windows中 git 命令使用记录
建议国内开发安装淘宝npm镜像cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 或者每次执行安装时 npm ins ...
- SQL Server GROUP BY 后 拼接 字符串
原文地址:https://blog.csdn.net/u010673842/article/details/79637618 select ID, ,,'') from class a group b ...
- float double 如何存储
类型float大小为4字节,即32位,内存中的存储方式如下: 符号位(1 bit) 指数(8 bit) 尾数(23 bit) 类型double大小为8字节,即64位,内存布局如下: 符号位(1 ...
- python遇到的文件错误
学习了json.load,运行时出现了以下错误 load读取的是前面写入的文件,如果读取的文件为空,则会出现这个错误,如果不为空,则正确.所以一定要保证读取的文件不为空.