Мы можем создавать комбинированные текстовые представления (не построчно), используя карту и сокращая функции.
struct ContentView: View {
@State private var boolArr = [false, false, true, true, false]
var body: some View {
(0...boolArr.count).map {
Text("\($0)")
}.reduce(Text(""), +)
}
}
Я хочу подчеркнуть определенный текст, если мы коснемся текста, а не всех текстов. Например, если я нажимаю на текст «1», он подчеркивает его. Если я коснусь еще раз, он удалит подчеркивание. Не все тексты подчеркивают и удаляют все подчеркивания, только конкретный текст, на котором я нажимаю. Следующие подходы показывают мне Не может convert value of type 'Int' to expected argument type 'WritableKeyPath<_, _>'
(1...boolArr.count).map {
Text(" \($0) ").underline(self.$boolArr[$0])
}.reduce(Text(""), +)
.onTapGesture(count: 1) {
self.$boolArr[$0] ? false: true
}
Почему не работает 0 долларов? И какой путь будет работать?