inout
上使用
any SomeProtocol
的函数,但编译器坚持认为它不能允许它,因为
`inout` allows for input to be changed to another type
但我可以制作一个防止输入更改的函数,并且想知道如果我可以让我的代码稍微不安全,我可以允许这个错误以某种方式出现吗?使用闭包,我允许界面用户定义几乎任何他们想要发生的事情,但它会输出错误。我尝试通过使输入定义不太明确但与必须输入的类型模棱两可来修复它,但是失败并产生新的错误。
您需要返回一个值而不是使用
inout
。而不是这个:
func f(_ x: inout any SomeProtocol)
...
f(&value)
你会用这个:
func f(x: some SomeProtocol) -> any SomeProtocol
...
value = f(value)