为什么Swift在这里给我一个EXC_BAD_INSTRUCTION?

时间:2015-11-10 13:01:08

标签: swift swift2

在操场上执行时,以下代码会导致EXC_BAD_INSTRUCTION

func greet(person: [String:String]?, age: Int?) {
    guard let name = person!["name"] where person != nil else {
        return
    }
}

greet(nil, age: nil)

谁能告诉我发生了什么?

1 个答案:

答案 0 :(得分:2)

person之后的感叹号会解除导致崩溃的可选项,因为personnil

使用可选绑定时,可以省略nil的显式检查。

func greet(person: [String:String]?, age: Int?) {
  guard let name = person?["name"] else {
    return
  }
}