假设我有一个接受inout参数的函数:
func foo(param: inout Int?) {
//I want to convert param to Int here without using return
}
我想在func中解包参数而不必返回它。我知道有很多方法可以解开可选的内容,但是我需要在一个函数内进行操作以重用它,而不必重写如下内容:
if let foo = someOptionalFoo {
}
在代码中多次。谢谢。
答案 0 :(得分:0)
func foo(param: inout Int?) {
//I want to convert param to Int here without using return
}
var bar: Int? = 5
foo(param: &bar)
print("\(bar)") //Optional(5)
您是否希望只打印5张,而无需选择?如果是这样,我认为这是不可能的。 bar
被键入为可选。通常,应该没有办法从另一个范围更改该变量的类型。
可能的是,只需确保在foo
上调用bar
之后,定义foo
,以确保bar调用后永远不会为零。就是这样:
func foo(param: inout Int?) {
//Make sure that param can never be nil, but some default if it is nil
param = param ?? 0
}
var bar: Int?
foo(param: &bar)
print("\(bar)") //Optional(0)
但是,每个人都会认为这是超级糟糕的做法,因此,如果不是绝对需要的话(我不认为这样做),您应该不要这样做。
答案 1 :(得分:0)
您可以使用Optional.map
:
let i: Int? = 3
_ = i.map { unwrapped in
//use the unwrapped value
print(unwrapped)
}
请记住,它返回一个值,因此返回_ =
。