Swift隐式解析,可选,断言

17 篇文章 0 订阅

// Swift 可选

/**

 注意:C Objective-C 中并没有可选这个概念。最接近的是 Objective-C 中的一个特性,一个方法要不返回一个对象要不返回nilnil表示缺少一个合法的对象。然而,这只对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective-C 方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失。这种方法假设方法的调用者知道并记得对特殊值进行判断。然而,Swift 的可选可以让你暗示任意类型的值缺失,并不需要一个特殊值。

 */

// 例子

//使用可选(optionals)来处理值可能缺失的情况

let abc = "123"//申明一个字符串abc 其值为"123"


let xyz = Int(abc) //转成int 若可转成功 Optional(123) 否为nil

//返回的是一个可选的值

print(xyz)


if (xyz != nil){

    print("\(abc) has an integer value of \(xyz!) ")


}

//当确定某个可选的确切有值的时候,可以用 ""来强制解析他。

//类型标注


var ser :Int? = 404

ser = nil


//类型标注

var www :String? // www 就是nil

/**

 Swift nil Objective-C 中的nil并不一样。在 Objective-C 中,nil是一个指向不存在对象的指针。在 Swift 中,nil不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选都可以被设置为nil,不只是对象类型。

 **/

/*

一个隐式解析可选其实就是一个普通的可选,但是可以被当做非可选来使用,并不需要每次都使用解析来获取可选值。下面的例子展示了可选String和隐式解析可选String之间的区别:

纯文本复制*/

let possibleString: String? = "An optional string."

print(possibleString!) // 需要惊叹号来获取值

// 输出 "An optional string."

let assumedString: String! = "An implicitly unwrapped optional string."

print(assumedString) // 不需要感叹号

// 输出 "An implicitly unwrapped optional string."


//断言 判断一个条件是否为真


//你可以使用全局assert函数来写一个断言。向assert函数传入一个结果为true或者false的表达式以及一条信息,当表达式为false的时候这条信息会被显示:

let age = -3

assert(age >= 0, "a person's old cannot be less than zero")

//如果 age >=0 不会出错 。但是 <0 断言被立即触发 执行不下去.

//何时使用断言

//

//当条件可能为假时使用断言,但是最终一定要保证条件为真,这样你的代码才能继续运行。断言的适用情景:

//整数的附属脚本索引被传入一个自定义附属脚本实现,但是下标索引值可能太小或者太大。

//需要给函数传入一个值,但是非法的值可能导致函数不能正常执行。

//一个可选值现在是nil,但是后面的代码运行需要一个非nil值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值