我遇到了一个简单的计算器应用程序的这些代码行。
func processOperation (operation: Operation) {
if currentOperation != Operation.Empty {
if runningNumber != "" {
rightValStr = runningNumber
runningNumber = ""
if currentOperation == Operation.Multiply {
result = "\(Double(leftValStr)! * Double(rightValStr)!)"
} else if currentOperation == Operation.Divide {
result = "\(Double(leftValStr)! / Double(rightValStr)!)"
} else if currentOperation == Operation.Subtract {
result = "\(Double(leftValStr)! - Double(rightValStr)!)"
} else if currentOperation == Operation.Add {
result = "\(Double(leftValStr)! + Double(rightValStr)!)"
}
leftValStr
声明为var leftValStr = ""
rightValStr
也声明为var rightValStr =""
我想知道使用“!”的目的是什么?
\(Double(leftValStr)! / Double(rightValStr)!)
中的目的是什么?据我所知,“!”用于展开可选。这里的leftValStr和rightValStr没有声明为Optional,为什么我们必须拆开它们?
最佳答案
即使leftValStr
和rightValStr
不是可选的,也要强制展开Double(leftValStr)
和Double(rightValStr)
,并且使用String值初始化Double的结果可能是nil
。
例如,您不能使用stackoverflow
字符串初始化Double。
如果要确保此转换结果正确,可以使用if let
避免强制展开,例如:
if let leftValDouble = Double(leftValStr) {
// do your code
} else {
// handle error
}
请记住,如果强行打开
nil
值,则代码将崩溃。