使用默认值处理可能的空赋值的更好方法是什么?

时间:2014-08-07 04:09:33

标签: swift

我在Objective-C中有这段代码:

CGFloat constant = self.leftConstraint.constant;

我想在Swift中实现同样的功能,但这是我能够让它工作的唯一方法(leftConstraint是一个可选变量):

var leftConstraintConstant : CGFloat = 0.0
if self.leftConstraint {
    leftConstraintConstant = self.leftConstraint!.constant
}

Swift中有没有办法在一行上做到这一点?

1 个答案:

答案 0 :(得分:9)

原始代码有效,因为在Obj-C中,消息发送到nil will return 0

Swift不允许使用nil消息。相反,您可以使用可选链接以及nil-coalescing运算符:

let leftConstraintConstant: CGFloat = self.leftConstraint?.constant ?? 0

这更好,因为您明确了解代码应该做什么:传播nil值,默认为0。