Y++ 数组声明:元素类型 数组名[] 或 元素类型 数组名[长度](禁止 元素类型[] 名)。
下标从 1 开始。[长度] 会预分配该长度的数组(整数元素初值为 0)。
假定:
点 {
整数 x = 0,
整数 y = 0
}
线 {
点 a,
点 b
}
部门 {
文本 名称 = "未命名",
点 成员[100]
}
1. 自定义类型的一维数组
字面量初始化
点 arr[] = [{1, 2}, {5, 6}, {9, 10}]
- 外层
[…]:数组 - 内层
{…}:每个元素是一个点
逐元素赋值(更清晰)
点 arr[] = [{0, 0}, {0, 0}, {0, 0}]
arr[1].x = 1
arr[1].y = 2
arr[2].x = 5
arr[2].y = 6
arr[3].x = 9
arr[3].y = 10
输出(到文本(arr[1].x)) // 1
arr[1].x = arr[1].x + 10
输出(到文本(arr[1].x)) // 11
arr[2] = {100, 200} // 替换整个元素(可选)
空数组:点 空[] = []
2. 嵌套类型的数组
线 边表[] = [
{{0, 0}, {1, 0}},
{{1, 0}, {1, 1}}
]
输出(到文本(边表[1].a.x)) // 0
输出(到文本(边表[2].b.y)) // 1
边表[1].b.x = 10
边表[2].a.y = 5
逐字段版:
线 边表[] = [{{0, 0}, {0, 0}}, {{0, 0}, {0, 0}}]
边表[1].a.x = 0
边表[1].a.y = 0
边表[1].b.x = 1
边表[1].b.y = 0
3. 类型内的数组字段
部门 d
d.名称 = "研发"
// 成员是字段数组:先整体赋字面量,再按下标改
d.成员 = [{10, 20}, {30, 40}]
输出(到文本(d.成员[1].x)) // 10
d.成员[2].y = 99
输出(到文本(d.成员[2].y)) // 99
也可:
部门 d = {"研发", [{10, 20}, {30, 40}]}
4. 外层数组 + 字段数组(双层下标)
这是最常用的「多层」形态,详见 09:
部门 表[] = [
{"甲组", [{1, 2}, {3, 4}]},
{"乙组", [{5, 6}]}
]
输出(到文本(表[1].成员[2].x)) // 3
表[2].成员[1].x = 100
输出(表[1].名称) // 甲组
5. 二维数组
点 网格[][] = [
[{0, 0}, {1, 0}],
[{0, 1}, {1, 1}]
]
输出(到文本(网格[1][2].x)) // 1
网格[2][1].y = 99
6. 与内建数组对照
文本 名[] = ["甲", "乙"]
整数 分[] = [10, 20, 30]
点 坐标[] = [{0, 0}, {1, 1}]
规则相同:类型 名[],下标从 1。
7. 数组元素传给函数
函数 处理一点(点 p) {
输出(到文本(p.x))
}
函数 主窗口.创建完毕() {
点 arr[] = [{3, 4}]
处理一点(arr[1])
}