YStudio Y++

04 — 数组

Y++ / YStudio 开发文档 · 一点滴

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])
}