我试图创建一个检查值是否为零的函数,以及是否为其提供默认值。这就是我到目前为止所做的:
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))
}
答案 0 :(得分:5)
由于message
参数是常量的明显原因,您收到错误。在else
内,您尝试更新message
参数。通过message
创建的if let
变量也是常量,但其范围仅在if
内,而不在else
内,也不在整个if/else
块之后。因此,您在message
调用中尝试使用的getFixedLengthString
变量是原始的message
参数。
最简单的解决方案是使用??
(nil-coalescing)运算符:
func appendMessage(message: String?, fixLength: Int){
messageBody.append(getFixedLengthString(message ?? DEFAULT_CHAR, fixLength))
}
??
运算符如果不是nil
则返回左侧的值,如果左侧是nil
,则返回右侧的值。
答案 1 :(得分:0)
如果你试图了解更多的逻辑/代码,那么你很容易解决它。
这个应该有效。
func appendMessage(message: String?, fixLength: Int) {
if let message = message {
messageBody.append(getFixedLengthString(message, fixLength))
} else {
messageBody.append(getFixedLengthString(DEFAULT_CHAR, fixLength))
}
}
也许你也可以试试这个班轮:
messageBody.append(getFixedLengthString(message == nil ? DEFAULT_CHAR : message!, fixLength))