我们想快速访问 Stroy 结构体中的一个名为pages数组的某个元素,正常的做法是想先取出pages,然后再根据下标去取,有没有更快速的办法呢?
使用subscript下标!
结构体中使用下标
import Foundation
struct Story {
let pages: [StoryPage]
subscript(_ pageIndex: Int) -> StoryPage {
return pages[pageIndex]
}
}
struct StoryPage {
let text: String
}
使用示例:
import SwiftUI
struct TestSub: View {
@State private var text = ""
var body: some View {
Text(text)
Button(action: {
let test = Story(pages: [StoryPage(text: "123")])
let storyPage = test[0]
text = storyPage.text
}, label: {
Text("TestSubscribe")
})
}
}
#Preview {
TestSub()
}
打印结果:123
类中使用下标
class SomeClass3 {
var pages: [StoryPage] = []
subscript(_ pageIndex: Int) -> StoryPage {
return pages[pageIndex]
}
init() {
self.pages = [StoryPage(text: "1")]
}
}
struct StoryPage {
let text: String
}
let story = SomeClass3()
let page = story[0].text
// page = "1"
同样在数组中、字典中都可使用下标语法:
let array = [1,2,3,4]
print(array[1])
// 2
let dic = ["a":"b","b":"c","c":"d"]
print(dic["a"] ?? "")
// b