【发布时间】:2015-12-29 01:06:09
【问题描述】:
我正在做这样的事情:
someFunction(&myClass)
其中 someFunction 对 myClass 上的数组进行排序。
someFunction(inout someclass:ClassA) {
someClass.sort({$0.price > $1.price})
}
如果我在函数调用之后打印 myClass,我注意到数组仍然是未排序的。据我所知,Swift 通过副本传递值。但是我用inout的时候,不应该改成引用传递吗?
【问题讨论】:
-
你能展示一个(小)完整、独立的例子吗?
-
这正是它正在做的事情:stackoverflow.com/questions/30541244/…
-
我发布了一些额外的代码。 @snowman4415 的回答是有道理的。我测试过,就是这样。我实际上是在对数组进行 sort()。
-
另外请注意,如果您实际上是对一个类而不是数组进行排序,则不需要
inout,因为inout仅用于为someclass分配一个新值,而不是就地修改它。相反,如果您在struct上排序(可能),您可以将结果分配给inout参数以获得所需的效果。 -
如果您找到满意的答案,您可以标记答案吗?
标签: swift