gpt4 book ai didi

swift - 为什么 optional 不发出警告或要求强制展开?

转载 作者:可可西里 更新时间:2023-11-01 00:39:16 25 4
gpt4 key购买 nike

struct SomeStruct {
var optVar : String?
var nonOptVar : String = "Hello"
var optvar2 : String!
}

let obj2 = SomeStruct(optVar: "a", nonOptVar: "b", optvar2: "c")
let a = obj2.optVar // why it is not asking for force unwraping
let b = obj2.nonOptVar
let c = obj2.optvar2
print(a)
print(b)
print(c)

请分享您对此的看法。但是,虽然我通常在项目中使用可选项,但它会发出警告'从 String 隐式强制表达?到任何'

最佳答案

这主要是由于类型推断。这里:

let a = obj2.optVar

a 被推断为 String? 类型,因为这是右边表达式的类型,不是吗?

// basically this:
let a: Optional<String> = obj2.optVar

可选值可以分配给可选类型的变量。这没有错。

但是,如果您将 a 声明为 String 类型,则需要将其解包:

let a: String = obj2.optVar // error!

警告 'Expression implicitly coerced from String? to Any' 在您尝试将可选值放入类型为 Any 的变量时出现,如下所示:

let a: Any = obj2.optVar // warning!

关于swift - 为什么 optional 不发出警告或要求强制展开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49399918/

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