这是否意味着set操作不读取可选项的实际值,因此不需要展开它?

var str = "Hello, playground"

class Base{
    var name:String?
};

var obj = Base()
obj.name = "hello" //this line don't need unwrapping first

最佳答案

可选项是一个框。该框可以不包含任何内容(称为nil),也可以包含特定类型的内容(在您的示例中为String)。打开一个可选项以访问框中的值。
将值分配给可选项时,只需将值分配给框本身。不需要打开任何东西,因为您只是将一个值放入框中。如果指定nil,Swift要么清空框,要么将值放入框中包装。
展开用于访问框中已存在的值。
从对另一个答案的评论中回答你的问题。。。
但是为什么可选的绑定不需要展开呢?我想如果让constantName=一些可选的也是一种分配
可选绑定是展开操作和分配操作。它说:“如果框中有一个值,将其赋值给这个新变量,然后输入THEN子句,否则,如果存在,则继续执行EFER子句。”

var optionalValue: String? = "hello"

if let value = optionalValue {
    // value is the contents of the box, it has type String
    print("value is \(value)")
} else {
    // the optional binding failed because the box is empty
    print("optionalValue is nil")
}

关于swift - 为什么在设置时不需要解开 optional 类型值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53005817/

10-14 20:46