as "以及何时使用 ()-6ren"> as "以及何时使用 ()-例如这段代码有效: var i = 5 var str: String str = String(i) 但这不是: str = i as String 另一方面,此代码有效。 let control-6ren">
gpt4 book ai didi

swift - 在 Swift 中重铸时,何时使用 " as "以及何时使用 ()
转载 作者:搜寻专家 更新时间:2023-11-01 06:14:10 25 4
gpt4 key购买 nike

例如这段代码有效:

var i = 5
var str: String
str = String(i)

但这不是:

str = i as String

另一方面,此代码有效。

let controller : MyViewController
controller = storyboard?.instantiateViewController(withIdentifier: "MyViewController") as! MyViewController

但这不是:

controller = MyViewController(storyboard?.instantiateViewController(withIdentifier: "MyViewController"))

最佳答案

String(i) 用于从另一个值(在本例中为 Int)创建一个 String 对象。这是从一种类型转换为另一种类型的正确方法。这不是 Actor 。

i as String 是强制转换,而不是转换。转换不会改变实际对象的类型。由于 i 是一个 Int,您不能简单地将它转换为 String。当您使用基类或 Any 获取对对象的引用并且您希望有一个变量来指定对象的实际数据类型时,通常会进行转换。

在您的第二个示例中,您声明了一个类型为 myViewController 的变量。大概这是 UIViewController 的子类。使用 as! myViewController 之所以有效,是因为您设置了 Storyboard,表明标识符为 "myViewController" 的 View Controller 确实属于 myViewController 类型。对 instantiateViewController(withIdentifier:) 的调用具有 UIViewController 的返回类型。因此,转换 (as!myViewController) 允许您指示 UIViewController 确实是一个 myViewController。如果没有转换,它会失败,因为您不能将 UIViewController 类型的值分配给 myViewController 类型的变量(但您可以相反)。

关于swift - 在 Swift 中重铸时,何时使用 "<object> as <type>"以及何时使用 <type>(<object>),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48601681/

25 4 0