gpt4 book ai didi

swift - Swift语法中的 "as"有什么作用?

转载 作者:搜寻专家 更新时间:2023-10-31 08:16:59 25 4
gpt4 key购买 nike

最近我偶然发现了一个我找不到引用的语法:as 在 Swift 语法中是什么意思?

喜欢在:

var touch = touches.anyObject() as UITouch!

不幸的是,很难搜索到像as 这样的词,所以我没有在Apple 的Swift 编程语言手册中找到它。也许有人可以引导我到正确的段落?

为什么 as 之后的元素总是有一个 ! 来表示展开一个 Optional?

谢谢!

最佳答案

as keyword用于将一个对象转换为另一种类型的对象。为此,类必须可转换为该类型。

例如,这个有效:

let myInt: Int = 0.5 as Int // Double is convertible to Int

然而,这不会:

let myStr String = 0.5 as String // Double is not convertible to String

您还可以使用 ? 运算符执行可选转换(通常用于 if-let 语句):

if let myStr: String = myDict.valueForKey("theString") as? String {
// Successful cast
} else {
// Unsuccessful cast
}

在您的例子中,touches 是(我假设来自 anyObject() 调用)一个 NSSet。因为 NSSet.anyObject() 返回一个 AnyObject?,所以您必须将结果转换为 UITouch 才能使用它。

在该示例中,如果 anyObject() 返回 nil,应用程序将崩溃,因为您强制转换为 UITouch!(显式展开)。更安全的方法是这样的:

if let touch: UITouch = touches.anyObject() as? UITouch {
// Continue
}

关于swift - Swift语法中的 "as"有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27954516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com