[绍棠_swift] Swift中的结构体
来源:互联网 发布:c语言二级证书有用吗 编辑:程序博客网 时间:2024/06/16 15:04
//
// ViewController.swift
// Learn_Swift_3
//
// Created by Coco on 2017/7/21.
// Copyright © 2017年 Coco. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
class person1 {
var name ="Tom"
// class var height: Int = 10 // 错误!类中不能有全局存储属性的,只能是计算属性
}
staticvar height0:Int = 10//可以设定全局属性,需要初始化
struct Person2 {
var age:Int
}
overridefunc viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var a:Int = 4
var b:Int?
a = 1
b = 1
print("a的值\(a) b得值\(String(describing: b))");
let p1 =person1()
var p_Name = p1.name;
ViewController.height0 = 20
var height1 =ViewController.height0
print("height1的值 \(height1)")
let p2 =Person2(age: 10) //当使用默认构造器时,必须初始化里面所有的属性
class Person3 {
var name:String ="Coco" //需手动初始化
var age:Int = 10
let height = 170
lazyvar p1:person1 =person1() //延迟,必须是var
}
var p3 =Person3()
var p3_Name = p3.name
p3.age = 18 //设置
// 懒加载lazy存储属性:当使用该属性时才进行初始化,好处是避免空间浪费,
print("p3中p1的值 \(p3.p1.name)")
/*
get:用来封装取值的过程
set:用来封装设置的过程
*/
class Person4 {
var name:String ="Json"
var height:Int = 167
var age:Int{ //只能是var
get {
returnheight * 2
}
set(newAge) {
height = newAge / 2
}
}
var weight1:CGFloat { //只读(get可省略)
get {
returnCGFloat(height * 2)
}
}
}
var p4 =Person4()
p4.age = 10 //当设age为10时, height变为5,当不设置age的值时, age值为height*2 334
print("person4对应的值\(p4.name, p4.age, p4.height, p4.weight1)")
// p4.weight1 = 130 // 只读,没有set方法,不能赋值
/// 死循环
class Person5 {
var weight:Int = 10
var age:Int {
get {
returnage //死循环, age会调用get方法
}
set {
age = newValue //死循环
}
}
}
// var p5 = Person5()
// p5.age = 10 // 造成死循环, crash
// 类属性(或者叫做类型属性)用class关键字修饰.类属性只能是计算属性.属性就是类似java中static修饰的属性.一个类只有一份,且多个实例对象共享.可直接用类名调用
class Person6 {
classvar name:String {
return"Coco"
}
}
var p6 =Person6()
// p6.name = "TOM" // 会报错
print("person6的值为\(Person6.name)")
// 监视属性变化的两个方法willSet, didSet (willSet, didSet和set, get不能共存)
class Person7 {
var name:String ="Coco" {
willSet {
print("Person7新值为:\(newValue)")
}
didSet {
print("Person7旧值为:\(oldValue)")
}
}
}
var p7 =Person7()
p7.name ="TOM"
// 函数与方法
class Person8 {
func sum(num1:Int, num2:Int) {
print("person8的值:\(num1 + num2)")
}
}
var p8 =Person8()
p8.sum(num1: 10, num2: 10)
// 用class修饰
class Person9 {
classfunc sum(num1:Int, num2:Int) {
print("person9的值:\(num1 + num2)")
}
}
Person9.sum(num1: 10, num2: 10)
// self与super,与OC相同
class Person10 {
func sum(num1:Int, num2:Int) {
self.fun() //对象方法调用对象方法,类方法调用类方法
}
func fun() {
print("person10")
}
}
// 下标
struct Person11 {
let height:Int //结构体在这里可以不初始化
subscript(index:Int)->Int {
returnheight * index
}
}
var p11 =Person11(height:170)
p11[3] //直接像访问数组一样访问,
print("person11\(p11[3])")
}
overridefunc didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
- [绍棠_swift] Swift中的结构体
- [绍棠_Swift] Swift中的回调传值
- [绍棠_Swift] Swift中类和结构体的区别
- [绍棠_swift] Swift中的继承、构造器
- [绍棠_Swift] Swift中的@noescape @escaping @autoclosure
- [绍棠_Swift] Swift
- [绍棠_Swift] Swift排序方法汇总
- swift中的结构体
- [绍棠_Swift] Swift3.0中的GCD
- [绍棠_swift] swift 中#pragma mark 表示方法
- [绍棠_swift] Swift中assert(断言)的使用
- [绍棠_Swift] Swift中扩展extension、协议protocol
- [绍棠_Swift] 怎样在Swift项目中引入CommonCrypto库
- [绍棠_Swift] Swift中使用Base64编解码
- [绍棠_Swift] Swift指纹验证解锁 touch事件
- Swift 中的结构体 (Struct)
- [绍棠_Swift] Swift3.0中的Alamofire网络请求的封装
- 11.Swift 中的类和结构体
- ros源码分析(6)—roslaunch Commandline Tools
- android基于监听的事件处理机制
- Win10 下安装 TensorFlow 遇到的一些问题
- 设计模式(23)-访问者模式
- 移动端flex 经典布局
- [绍棠_swift] Swift中的结构体
- 个人知识管理的方法
- linux dd命令小结
- python入门系列——第2篇
- Python起步之文件案例
- 密码学笔记5 非对称密钥算法
- 微信小程序开发之网络请求(GET请求)
- 培训心得--做人做事方式
- 匈牙利算法,二分图的最大匹配