在 C 中,虽然我们将值声明为const int a = 5;
,但我们可以传递&a
给声明为 的函数void someFun(const int *);
。
根据经验,在 C 语言中,当不需要更改原始值时,i) 如果对象的大小小于或等于指针的大小,则按值传递,ii) 否则按将整个值复制到函数的 const 引用会占用更多资源。
但是在 swift 中,即使 inout 参数没有在函数中修改,我们也不能将声明为的值传递给声明为let a = 5
的函数someFun(_ z: inout Int) -> ()
。因此,我们必须将函数中的 z 标记为 let。这会将整个值复制到函数中。如果 a 类型的大小很大,这可能会花费更多。有解决方法吗?