斯威夫特 |禁用可以使用带有 `any <#AnyProtocol#>` 类型的 inout 自行纠正的错误

问题描述 投票:0回答:1
我一直在制作一个在

inout

 上使用 
any SomeProtocol
 的函数,但编译器坚持认为它不能允许它,因为 
`inout` allows for input to be changed to another type
 但我可以制作一个防止输入更改的函数,并且想知道如果我可以让我的代码稍微不安全,我可以允许这个错误以某种方式出现吗?

使用闭包,我允许界面用户定义几乎任何他们想要发生的事情,但它会输出错误。我尝试通过使输入定义不太明确但与必须输入的类型模棱两可来修复它,但是失败并产生新的错误。

swift compiler-errors closures inout
1个回答
0
投票
不。这是不可能的。

您需要返回一个值而不是使用

inout

而不是这个:

func f(_ x: inout any SomeProtocol) ... f(&value)
你会用这个:

func f(x: some SomeProtocol) -> any SomeProtocol ... value = f(value)
    
© www.soinside.com 2019 - 2024. All rights reserved.