swift 中的 as 操作符

The as operator (as 操作符)

对于 swift 初学者来说, as操作符尝尝使人困惑.

as? operator, 可失败转换操作符 as?

表示可失败的转换, 或者叫做可选转换(Optional conversion), 当转换失败, 则返回nil. 常用于Any或者AnyObject向其它类型转换.

	request { res, _ in
		if let response = res as? SQISpecifiedClass {
			// ...
		}
	}

as! operator, 强制转换操作符 as!

表示强制转换(Forced conversion), 编译器遇到此操作符, 会忽略此处的安全检查, 在运行时, 如果转换失败, 则会立即CRASH/runtime trap. 常用于已知实际类型的情况下, 向下转换(downcasting, converting from a class to one of its subclasses).

class Animal {}
class Dog: Animal {}
let a: Animal = Dog()
a as! Dog		// forced downcast is allowed

as operator 确定转换操作符 as

表示确定的转换(Guaranteed conversion), 编译器能够直接确定转换必然成功的情况下, 可以使用此操作符. 常用于如下情况:

    1. 向上转换(upcasting) (子类转换为父类);
    1. 指定文字表达式的类型, (e.g., 1 as Float);
    1. swift 对象转换为对应的 Objective-C 对象, (eg., Data() as NSData)’
/** 
 *	1. 向上转换 upcasting
 *	`d`的类型最终为`Animal` 	
 */
class Animal {}
class Dog: Animal {}
let d = Dog()
d as Animal

/**
 *	2. 指定文字表达式的类型
 */
let f = 2 as Float	// 类型为`Float`, 值为2.0
let cf = 2 as CGFloat	// 类型为`CGFloat`, 值为2.0

/**
 *	3. swift 对象转换为对应的 Objective-C 对象
 */
 let data = Data()
 let nd = data as NSData

相关文档

苹果官方blog提供了非常有价值的描述: https://developer.apple.com/swift/blog/?id=23

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

依旧风轻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值