我有一个可选的struct和一个辅助函数,可以在需要时创建结构,并将数据添加到该结构中。
所以在该函数中我知道该值存在,但每次访问它时都需要强制解包:
bin
我想做的是像
someStruct!.someField1 += value1
someStruct!.someField2 += value2
...
这显然不起作用,因为if let someStruct = someStruct {
someStruct.someField1 += value1
someStruct.someField2 += value2
...
}
被视为该块内的副本。使用someStruct
也没有用,因为它只是制作了一个可变副本。我想要的是var
,但到目前为止,我找不到任何方法以简单的形式实现它。
我找到的唯一工作方式是再添加一个功能级别,例如:
inout
这似乎是不必要的复杂事情,我不确定它的优化程度如何。
那么,有没有办法使用类似func fillStruct(_ someStruct : inout SomeStruct) {
someStruct.someField1 += value1
someStruct.someField2 += value2
...
}
fillStruct(&someStruct!)
的语法对结构进行可变引用?