swift : Useless default value for Optional?

标签 swift option-type

我正在创建一个这样的函数:

func foo(bar: UInt? = 0) {
  let doSomething = someOtherFunc(bar!)
}

如果我向 foo() 传递一个 nil 值,我希望在解包时使用默认值 0,而不是我遇到了常见错误 unexpectedly found nil while unwrapping an Optional value

我哪里错了?

最佳答案

默认值 = 0 仅在您不提供参数时使用 对于可选参数:

func foo(bar: UInt? = 0) {
    println(bar)
}

foo(bar: nil) // nil
foo(bar: 1)   // Optional(1)
foo()         // Optional(0), default value used

如果您打算用 0 替换传递的 nil 值 那么你可以使用 nil-coalescing 运算符 ??:

func foo(bar: UInt?) {
    println(bar ?? 0)
}

foo(nil) // 0
foo(1)   // 1

关于 swift : Useless default value for Optional?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29634364/

相关文章:

iOS/swift : Action method from TextField Generating nil While Unwrapping Optional Error

swift - Swift 3.0 中的 UIView?() 构造函数发生了什么变化?

ios - swift [字符串 : AnyObject] not convertible to T Swift Arrays

ios - Swift 中的 Facebook 游戏请求

swift - 无法将 Realm 列表从 List<SpecificObject> 转换为 List<Object>

ios - UIScrollView 不响应手势

swift - 预期 ',' 加入多子句条件的部分

haskell - 使用 “staircasing” 代码中的 `Maybe` 值重构 `IO`

ios - 在 swift 中展开多个可选项

java - 如何将 Optional 转换为 OptionalInt?