构造函数调用的可选链接?
Optional chaining for constructor calls?
我想选择性地将 NSNumber?
转换为 Int?
,但是 Int
的初始化方法只需要 init(NSNumber)
,所以我无法传递 NSNumber?
.
我有没有办法压缩这段代码,以便它使用可选链接之类的东西?
// number: NSNumber?
let integer = number == nil ? nil : Int(number!)
Int
构造函数不接受可选参数。
您可以 "wrap" 构造成 map()
:
let number : NSNumber? = ...
let n = number.map { Int([=10=]) } // `n` is an `Int?`
但是这里使用带有可选链接的 NSNumber
的 integerValue
属性 更容易:
let n = number?.integerValue // `n` is an `Int?`
或
let n = number as? Int // `n` is an `Int?`
因为 Swift "bridges" 在 NSNumber
和 Int
之间自动。
我想选择性地将 NSNumber?
转换为 Int?
,但是 Int
的初始化方法只需要 init(NSNumber)
,所以我无法传递 NSNumber?
.
我有没有办法压缩这段代码,以便它使用可选链接之类的东西?
// number: NSNumber?
let integer = number == nil ? nil : Int(number!)
Int
构造函数不接受可选参数。
您可以 "wrap" 构造成 map()
:
let number : NSNumber? = ...
let n = number.map { Int([=10=]) } // `n` is an `Int?`
但是这里使用带有可选链接的 NSNumber
的 integerValue
属性 更容易:
let n = number?.integerValue // `n` is an `Int?`
或
let n = number as? Int // `n` is an `Int?`
因为 Swift "bridges" 在 NSNumber
和 Int
之间自动。