如何将 `Int8?` 转换为 `Int?`?
How to cast `Int8?` to `Int?`?
我有一个名为 seconds
的 UInt8?
变量,我需要将其传递给接受 Int?
.
的函数
这导致 无法将类型 UInt8?
的值转换为预期的参数类型 Int?
。
这意味着我必须施法,所以我尝试了显而易见的方法:
Int?(seconds)
但这会导致:UInt8?
无法转换为 Int
。
当然可以:
(seconds == nil) ? nil : Int(seconds!)
但是卧槽,真的有必要这么做作吗?
您的类型是Optional<UInt8>
。 UInt8
总是可以用函数 Int.init
转换为 Int
。但是因为它被包裹在 Optional
中,你必须将该函数映射到可选的,产生一个类型为 Optional<Int>
:
的新值
seconds.map(Int.init)
Optional.map(_:)
and its companion flatMap
通常使使用可选值更容易。
我有一个名为 seconds
的 UInt8?
变量,我需要将其传递给接受 Int?
.
这导致 无法将类型 UInt8?
的值转换为预期的参数类型 Int?
。
这意味着我必须施法,所以我尝试了显而易见的方法:
Int?(seconds)
但这会导致:UInt8?
无法转换为 Int
。
当然可以:
(seconds == nil) ? nil : Int(seconds!)
但是卧槽,真的有必要这么做作吗?
您的类型是Optional<UInt8>
。 UInt8
总是可以用函数 Int.init
转换为 Int
。但是因为它被包裹在 Optional
中,你必须将该函数映射到可选的,产生一个类型为 Optional<Int>
:
seconds.map(Int.init)
Optional.map(_:)
and its companion flatMap
通常使使用可选值更容易。