Swift知识点

Swift应用于iOS macOS 和watchOS TVOS

敏捷 灵巧而不失简洁

swift与java JavaScript c#等语法相似

  • 二 swift操作符号

swift 加法操作符

数学操作符

对浮点数求余

操作符有一元操作符 二元操作符 三元操作符

赋值运算符

a = b 意为用b的值来初始化或更新a的值。

元组型变量可以一次给多个变量赋值

var (d, e, f) = (3, 4, 5)

swift求% 支持整数和符点数

取负和取正 - +

数学操作符 + -

组合赋值操作符

var x = 15

比较操作符

>= <=

区间操作符

闭区间 a...b

半开区间a..<b

逻辑操作符

用于修改或组合布尔值 & |

  • 三 字符串和字符

字符串是一个有序的字符集,

swift中用String来表示字符串类型 ,他是character集合

字符串子面量 双引号“”的值称为子面量

let a = ""

可以用Character类型来定义字符串.

let a : Character = "A"

可以对一个字符串的characters属性进行循环,来访问其中单个字符

for x in c.characters {
    print(x)
}

连接字符串和字符 用+符号

var d: Character = "!"

c.append(d)

字符串插值:组合常量/变量/字面量/表达式成一个长字符串

let 订票提示 = "旅客\(name)先生, 您在\(time)订购了\(车类型)\(车次),单程票价是\(票价)元的往返.一共需要支付\(票价 * 2)元."

Unicode: 一种国际化文字编码标准. 几乎可以兼容所有语言的文字和书写系统.除了可以直接打出Unicode字符,还可以使用数字化的量,叫Unicode标量.\u{1F425} 汉字Unicode一览

字符计数: 使用字符串characters属性的count属性来获取字符个数.

修改字符串. 通过字符串的各种方法和属性,其中一种方法是使用索引.

首字符索引 startIndex, endIndex是尾字符后一个位置.

a.startIndex
a.endIndex

字符串和字符相等性:用 == 或 != 操作符. Unicode扩展语素组合而成的字符与正式的单个字符被视为相等.

一个类/结构体/枚举关联的值. 分为实例属性和类型属性

懒加载属性: 用于延后载入一个资源消耗大户(大文件/图像/视频/网络操作等).

class 地图 {
    var filename = "死亡沙漠.map"
}

class 战士: 角色 {
    lazy var 打怪地图 = 地图()
    var 进入副本 = false
}

🐬计算属性:由其他属性计算得出的. 由getter和setter组成.
getter⏳获取器(必须):描述属性如何计算及返回语句,形式: get { 语句和返回 }
setter🔨设置器(可选):有新值(newValue)后如何影响其他属性.形式: set { 语句 }.
🌰游戏人物的坐标,移动后的坐标.

  var 人物坐标 = 坐标()
    var 人物移动方式 = 移动方式.走
    
    var 当前坐标: 坐标 {
        get {
            switch 人物移动方式 {
            case .走:
                人物坐标.x += 1
                人物坐标.y += 1
            case .跑:
                人物坐标.x += 3
                人物坐标.y += 3
            case .骑:
                人物坐标.x += 10
                人物坐标.y += 10
            case .传送:
                人物坐标.x += 1000
                人物坐标.y += 1000
            }  
            return 人物坐标
        }
        
        set {
            人物坐标 = newValue
        }
    }

👀属性监视器: 类似计算属性的setter,可以响应所有属性中值的变化.
willSet: 事前响应. 新值 newValue
didSet : 事后响应. 旧值 oldValue

  var 总经验 : Int = 0 {
        willSet {
            print("当前总经验是:\(newValue)!")
        }
        didSet {
            print("增加了\(总经验 - oldValue)点经验!")
        }
    }

类型属性 :属于类型本身,通用于任何实例,所以总是有默认值.

⚠️对于类, 计算型的类型属性,前面要加关键字class. 可被子类重写(override)

lass 生命体 {
    class  var 遗传方式 :String {
        return "RNA"
    }
    
}

class Human: 生命体 {
    override class var 遗传方式: String {
        return "DNA"
    }
}

enum 猜拳 {
    case 石头,剪刀,布
    
    static let game = "猜拳"
    
     mutating func 开始() {
        print("我出的是\(self)")
        
        switch self {
        case 剪刀 :
            self = 石头
        case 石头:
            self = 布
        case 布:
            self = 剪刀
        }
        
        
    }
}

结构体/枚举实例默认不可改变属性值. 若需要修改,须加上mutating关键字.

struct 角色坐标 {
    var x = 0, y = 0
    
    mutating func 安全区坐标(x: Int, y: Int) {
        self.x = x
        self.y = y
 对于类, 加关键字class. 可被子类重写(override)

 class func 服务器名() {
        print("\(姓名),您在北京联通一区!")
    }

class之间的“父子”关系的体现。

1⃣️子类可以继承父类的属性和方法

子类可以根据需要,修改继承来的属性和方法(多态)

一个函数可以加上throws关键字,表示可以处理错误. 这个函数的调用者可以捕获(catch)这个错误并进行应对.

func aFoo() throws {
    print("iOS教学直播,房间号:57621, douyu.com/xiaobo")
}

处理更细分的错误情况,错误类型须遵从ErrorType协议。

swift中错误处理

特定的清理收尾工作。defer语句

 defer {
        print("Game over!")
    }

任何满足协议的“需求”的类型,被称为“遵从”该协议。

struct 某个结构体: 某协议, 另一个协议 {
    
}

class 子类: 父类, 某协议, 另一个协议 {
    
}

属性协议:顾名思义,要求遵从者实现以指定的名称实现属性,但具体实现是实例属性或类型属性并不关心。

对既有的类/结构体/枚举/协议添加新功能,即使无权查看这些类型的源代码(也叫:追加建模). 扩展没有名称

类型参数紧跟函数名之后,用尖括号包含,如: <类型占位符>.
一旦定义了类型参数, 即可用作定义参数类型/函数返回类型/函数体中做类型标识.
无论何时函数被调用时, 类型参数就被实际的类型取代. 可以定义任何多类型参数, <占位符1,占位符2,..>
命名:大多数情况下, 类型参数名称望文生义即可. 比如 Dictionary<Key, Value> , Array<Element> ,描述了相互之间,或与函数的关系. 如无明显的关联, 传统上用单个的大写字母, 如T, U, V. T代表Type(类型).

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值