构造函数调用的可选链接?(Optional chaining for constructor calls?)

编程入门 行业动态 更新时间:2024-10-25 18:23:32
构造函数调用的可选链接?(Optional chaining for constructor calls?)

我想选择施放NSNumber? 到Int? ,但Int的初始化方法只接受init(NSNumber) ,所以我无法传递NSNumber? 。

有没有办法让我压缩这段代码,以便它使用像可选链接这样的东西?

// number: NSNumber? let integer = number == nil ? nil : Int(number!)

I want to optionally cast an NSNumber? to an Int?, but the initialiser method for Int only takes init(NSNumber), so I can't pass an NSNumber?.

Is there a way for me to compact this code so that it uses something like optional chaining?

// number: NSNumber? let integer = number == nil ? nil : Int(number!)

最满意答案

Int构造函数不接受可选参数。 你可以将结构“包装”到map() :

let number : NSNumber? = ... let n = number.map { Int($0) } // `n` is an `Int?`

但是在这里使用NSNumber的integerValue属性和可选链接更容易:

let n = number?.integerValue // `n` is an `Int?`

要不就

let n = number as? Int // `n` is an `Int?`

因为Swift会自动在NSNumber和Int之间“桥接”。

The Int constructors don't take optional arguments. You could "wrap" the construction into map():

let number : NSNumber? = ... let n = number.map { Int($0) } // `n` is an `Int?`

But here it is easier to use the integerValue property of NSNumber with optional chaining:

let n = number?.integerValue // `n` is an `Int?`

or just

let n = number as? Int // `n` is an `Int?`

since Swift "bridges" between NSNumber and Int automatically.

更多推荐

本文发布于:2023-07-29 14:07:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1316749.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:可选   函数   链接   Optional   constructor

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!