【问题标题】:Using a closure vs a method within a view that takes in a closure在接受闭包的视图中使用闭包与方法
【发布时间】:2021-12-27 17:27:41
【问题描述】:

我一直在使用 SwiftLint,遇到了多个 multiple_closures_with_trailing_closure 定义的错误 here

我遇到的最大问题是我的Button,我会在其中切换一些布尔值,例如

Button(action: {self.startTimer.toggle()}) {
   ...trailing closure
}

当我关闭一个方法的简写闭包时

func toggleTimer() { self.startTimer.toggle() }

linting 错误消失了。我仍然不确定关于“不止一个结束论点”部分的投诉是什么。

在传递多个闭包参数时不应使用尾随闭包语法。

这个特定示例中的这种 linting 错误是什么意思?

【问题讨论】:

    标签: swift swiftlint


    【解决方案1】:

    Button 需要两个闭包,一个用于“动作”,一个用于“标签”。 SwiftLint 不希望你去掉位于两个闭包之间的标签。它期待这个:

       Button(action: {self.startTimer.toggle()}, label: {
               ...trailing closure
            })
    

    您的代码完全有效,只是没有按照 SwiftLint 的规范格式化。

    【讨论】:

    • 太棒了!感谢您的详细解释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 2015-05-16
    • 2021-06-27
    相关资源
    最近更新 更多