Swift 全局函数调用协议类型的变异方法。如何摆脱var tmp对象?

Swift 全局函数调用协议类型的变异方法。如何摆脱var tmp对象?,swift,protocols,inout,Swift,Protocols,Inout,这是我的工作代码片段。 但是我想去掉函数幻灯片中的var tmp变量 我尝试过类似的方法,以避免var tmp: func slide(slider: inout Moveable) { slider.move(to: CGPoint(x: 100, y: 100)) } slider(slider: prius) // <--- Compile Error // Cannot use mutating member on immutable value: 'slider' is

这是我的工作代码片段。 但是我想去掉函数幻灯片中的var tmp变量

我尝试过类似的方法,以避免var tmp:

func slide(slider: inout Moveable) {
    slider.move(to: CGPoint(x: 100, y: 100))
}

slider(slider: prius) // <--- Compile Error
// Cannot use mutating member on immutable value: 'slider' is a 'let' constant
slider(slider: prius as (inout Moveable) // <--- Compile Error

多谢各位

这可能与以下小变化有关:

func slide<M: Moveable>(slider: inout M) {
    slider.move(to: CGPoint(x: 100, y: 100))
}

这可能与以下小变化有关:

func slide<M: Moveable>(slider: inout M) {
    slider.move(to: CGPoint(x: 100, y: 100))
}

如果我们最终变异,为什么需要结构?@Sh_Khan,结构也可以是可变的,它们只是不像ClasseSObject那样有共享状态。是的,但这会在内部复制结构,而不是只有1个引用type@Sh_Khan,有时您需要的正是这一点,如果它没有用处,那么这些语言中就不会有值类型。我不喜欢在这里强制使用类。如果我们最终发生变异,为什么需要结构?@Sh_Khan,结构也可以是可变的,它们只是不像ClasseSObject那样具有共享状态。是的,但这会在内部复制结构,而不是只有1个引用type@Sh_Khan,有时候你需要的正是这个,如果它没有用处,那么这些语言中就不会有值类型。我不想在这里强制使用类。
slide(slider: &prius)
slide(slider: &square)