如何解决匿名闭包参数不能在具有显式参数的闭包内使用
所以我试图在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 举报,一经查实,本站将立刻删除。