【发布时间】:2015-08-12 08:39:43
【问题描述】:
以下代码:
protocol SomeProtocol {}
class SomeClass: SomeProtocol {}
private func doSomethingWith(inout someVar: SomeProtocol) {}
private var someGlobalVar = SomeClass() // inferring SomeClass's type
doSomethingWith(&someGlobalVar)
产生以下错误:
无法使用“(inout SomeClass)”类型的参数列表调用“doSomethingWith”
将倒数第二行更改为private var someGlobalVar: SomeProtocol = SomeClass() 可解决错误。
主题
【问题讨论】:
-
我很惊讶这个问题没有更多的观点!似乎更多的人会遇到......再一次,也许人们不再通过带有协议参数的函数来改变对象。 :)
-
@RayToal 可能是因为
inout变量在设计架构时并不是很受欢迎的选择;) -
没错,而且是为了更好。纯类协议很好地解决了这个问题,但并不明显。
标签: swift swift2 xcode7-beta5