【发布时间】:2021-11-19 01:12:54
【问题描述】:
当我在某些情况下必须初始化 Binding 时,我想制作一个让我的打字更容易的函数!
代码如下:
func bindingFunction(value: inout CGFloat) -> Binding<CGFloat> {
return Binding(get: { return value }, set: { newValue in value = newValue })
}
我从 xCode 收到 2 个错误:
- 参数“value”被声明为“inout”
转义闭包捕获'inout'参数'value'
我的目标是首先解决这些错误,最后我想让我的函数也通用,因为你看到我的函数适用于我的绑定 CGFloat想让它通用,然后我可以在需要 Binding Bool 时使用它。
【问题讨论】:
-
inout在这里不起作用的相关信息:stackoverflow.com/a/39572470/560942 -
那么我的目标是不可能的,对吧?
-
如果您的要求之一是使用
inout,这似乎不太可能(尽管也许有人知道一些疯狂的技巧来让它工作)。您可能可以通过将转义闭包作为返回值的参数而不是inout参数来使其工作,但在这一点上,真的没有理由不首先编写 Binding。 -
正如我所说的打字问题会更好。
-
但是如果你使用了闭包,你需要提供两个闭包——一个用来获取值,一个用来设置值,这正是 Binding 首先要做的。所以,它不会为你节省任何东西。