这是否意味着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/