微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

匿名闭包参数不能在具有显式参数的闭包内使用

如何解决匿名闭包参数不能在具有显式参数的闭包内使用

所以我试图在SwiftUI中创建一个使用数组每个项目的选择器。当我尝试让Xcode使用数组的项(在代码中可见)时,Xcode说“匿名闭包参数不能在具有显式参数的闭包内使用”

import SwiftUI

struct TimerPicker: View {
    @State var selectedTime = 0
    
    let availableMinutes = Array(1 ... 59)
    private let pickerStyle = SegmentedPickerStyle()
    var body: some View {
        vstack {
            Picker(selection: $selectedTime,label: Text("")) {
                ForEach(0 ..< availableMinutes.count) {_ in
                    Text("\(self.availableMinutes[$0]) min")
                }
                
            }
            .labelsHidden()
        }
    }

在此先感谢您的回答。

解决方法

正如Joakim所提到的,匿名参数是$0$1,这些参数仅基于参数的顺序。 闭包主体的完整语法为

{ (parameters) -> return type in
    statements
}

如果不提供参数列表,则需要使用上述匿名参数$0 / $1语法。

如果提供参数名称,则不能使用匿名参数。您必须使用提供的名称。

闭包中的_告诉编译器,闭包代码将完全忽略该参数。完成此操作后,闭包体内将无法访问该参数。 (请注意,您可以忽略某些参数,而将其他参数映射到名称。)

要么摆脱闭包的_ in部分,要么使用匿名参数,或者将_更改为index之类的参数名称(如Joakim在其评论中所建议的那样)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。