YStudio Y++

自定义类型(`.yt`)

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

自定义类型是值语义结构体(拷贝整份数据),与扩展句柄类(HTTP类 / 对象类 等)不同。

怎么新建

  1. 工程树 → 源代码 → 右键 → 新建自定义类型文件
  2. 输入名称(可省略 .yt
  3. 文件里只写类型定义

保存后,工程内任意 .yc 自动可用,无需导入

.yt 定义(可带默认值)

点 {
    整数 x = 0,
    整数 y = 0
}

矩形 {
    整数 top = 0,
    整数 left,
    整数 right,
    整数 bottom = 100
}

部门 {
    文本 名称 = "未命名",
    点 成员[]
}

.yc 推荐用法(不必写 {}

点 points
points.x = 10
points.y = 20
输出(到文本(points.x))

矩形 r          // top=0,bottom=100
r.left = 5
r.right = 200

点 p = {10, 20} 仍可用,只是可选的一行初始化。

数组与多层嵌套(摘要)

完整专题:examples/usertype/03-嵌套结构.md04-数组.md09-多层嵌套与下标链.md

' 数组:类型名 变量名[](不是 类型名[] 变量名)
点 arr[] = [{1, 2}, {5, 6}]
arr[1].x = 11                    // 下标从 1 开始

' 外层数组 + 字段数组 + 字段
部门 表[] = [
    {"甲组", [{1, 2}, {3, 4}]},
    {"乙组", [{5, 6}]}
]
输出(到文本(表[1].成员[2].x))   // 3
表[2].成员[1].y = 60

' 三层纯结构嵌套
单据 o
o.买方.住址.市 = "杭州"

' 自定义类型名也可叫 myfunc
myfunc demo[] = [{1, "甲", {10, 20}}, {2, "乙", {30, 40}}]
输出(到文本(demo[2].坐标.x))    // 30

声明必须是 点 arr[]点 结构体 arr[]不是 点[] arr
字段数组:点 成员[]。结构用 {},数组用 []

规则速查

规则 说明
文件内容 .yt 只放类型,不写函数/变量
默认值 标量可写 整数 x = 10;数组字段/嵌套类型字段暂不支持默认值
分隔 / , / 换行
自引用 禁止 节点 { 节点 下一 }
下标 1 开始
值语义 赋值是拷贝;函数改参数不影响实参

详细文档

详解:examples/usertype/(01~09,含多层嵌套与数组)