3. 变量和简单类型

3.1 变量的作用域和生命周期

  • 全局变量:同一模块的全局变量相互可见。
  • 属性 (实例属性、静态属性)
  • 局部变量

3.2 变量声明

let
var (变量的类型不能变)

3.3 计算后的初始化

通过匿名函数。

3.4 可计算的变量

即变量可以有函数。
例如变量的setter 和getter方法:

var now:String{
    get {
        return NSDate().description
    }
    set{
        print(newValue)
    }
}

注意点:

  1. 必须是变量,同时明确声明类型
  2. get是一个非正式的函数,必须有返回值
  3. set是一个非正式的带有一个参数的函数,不必是newValue
  4. 必须有getter。如果没有setter,get和{}可以省略
var now:String{
    return NSDate().description
}

3.5 Setter Observers

比起使用3.4 来,更加明智

var s="whatever"{
    willSet{
        print(newValue)
    }
    didSet{
        print(oldValue)
    }
}

注意点:
1. 必须是变量,可以赋给初始值
2. willSet 是在赋予新值之前,新值作为参数 可以在willSet之后(新名称)
3. didSet 是在赋予新值之后,旧值作为参数 可以在didSet之后(新名称)

3.6 延迟初始化

有以下三种情况:

  1. 全局变量:自动延迟初始化
  2. 静态属性:同1
  3. 实例属性:需要手动 lazy。必须为var。(当需要在初始化的时候引用实例)

3.7 内置的简单类型

3.7.1 Bool

true false
与其他语言不同,其他类型不会隐式的被当做Bool。

3.7.2 数值

主要是Int 和Double,其他类型的存在主要是为了与C、OC兼容

3.7.2.1 Int

所表示的范围依赖于具体平台。
_ 增强可读性
前置的0为了对齐

3.7.2.2 Double

3.7.2.3 类型转换

Double(y)
隐式转换只针对于字面量用于变量赋值,或作为参数传递给函数,用作算数运算。

3.7.2.4 算术运算

+ - * / %
& | ^ ~
<<  >>
let i=Int.max-2
let (j,over)=Int.addWithOverflow(i,12/2)

使用&+、&-、&* 来不关心溢出
+=、-=、*=、/=、%=、&=、|=、^=、~=、<<=、 >>=
++ --

3.7.2.5 比较

==、!=、<<=>、>=

3.7.3 String

let greeting ="hello"
let left="\u{21DA}"

\()

许多字符串的函数操作 都在UIKit 和Foundation中,

swift中的String是以characters 来计算长度的
NSString中是以代码点计算长度

3.7.4 Character

生成一个Character对象

let c=Character("h")

3.7.5 Range

...
..<

3.7.7.5 与Optional比较

与非nil 比较时,比较的是包含的值。

let s:String?="howdy"
if s=="howdy"{
//相等的
}

3.7.7.6 why Optionals?

与OC兼容。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值