【发布时间】:2014-12-13 17:46:01
【问题描述】:
如果我有一些现有的结构,但我想使用“引用”行为,我该如何实现?
我可以写一些简单的类持有者,比如
class Box<T> {
var value: T
init(_ value: T) {
self.value = value
}
}
我猜标准库里肯定有现成的类,但是没找到。
我想将该引用存储在我的类中,所以 inout 参数不是我需要的。
【问题讨论】:
-
class会更适合您的目的吗?它们是通过引用传递的。struct的实例设计为按值传递。 -
这将解决我的问题,但这意味着我必须复制现有的框架结构,如 CGRect 并实现来回转换。如果可能的话,我想避免重复。
-
@sapi: Swift 中的一切都是通过值传递的,除非参数被标记为
inout,在这种情况下它总是通过引用传递。 -
@newacct 基本上,
inout参数不是“call-by-reference”,而是"call-by-copy-restore"。
标签: swift struct pass-by-reference