我正在尝试创建一个函数来检查值是否为 nil 以及是否为它提供默认值。这是我目前所拥有的:
func appendMessage(message: String?, fixLength: Int){
if let message = message {
} else {
message = DEFAULT_CHAR//this is a default value, error is here
}
messageBody.append(getFixedLengthString(message, fixLength))
}
最佳答案
你得到这个错误的原因很明显,message
参数是一个常量。在 else
中,您正在尝试更新 message
参数。通过 message
创建的 if let
变量也是一个常量,但它的范围仅在 if
内部,而不是 else
或整个 if/else
block 之后。因此,您在调用 message
时尝试使用的 getFixedLengthString
变量是原始 message
参数。
最简单的解决方案是使用 ??
(零合并)运算符:
func appendMessage(message: String?, fixLength: Int){
messageBody.append(getFixedLengthString(message ?? DEFAULT_CHAR, fixLength))
}
??
运算符如果不是 nil
则返回左边的值,如果左边是 nil
则返回右边的值。
关于swift - 无法分配给值 : 'message' is a 'let' constant in a fucntion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46914526/