YStudio Y++

05 — 函数参数与返回值

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

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

线 {
    点 a,
    点 b
}

参数 + 返回

函数 加(点 a, 点 b) 点 {
    点 r
    r.x = a.x + b.x
    r.y = a.y + b.y
    返回(r)
}

函数 主窗口.创建完毕() {
    点 p1
    p1.x = 10
    p1.y = 20
    点 p2
    p2.x = 1
    p2.y = 2
    点 p = 加(p1, p2)
    输出(到文本(p.x)) // 11
}

也可:点 p = 加({10, 20}, {1, 2})

只读参数字段

函数 曼哈顿距离(点 a, 点 b) 整数 {
    整数 dx = a.x - b.x
    整数 dy = a.y - b.y
    如果 (dx < 0)
        dx = 0 - dx
    如果 (dy < 0)
        dy = 0 - dy
    返回(dx + dy)
}

返回嵌套类型

函数 水平线(整数 y, 整数 x1, 整数 x2) 线 {
    线 ln
    ln.a.x = x1
    ln.a.y = y
    ln.b.x = x2
    ln.b.y = y
    返回(ln)
}

函数 演示() {
    线 ln = 水平线(5, 0, 10)
    输出(到文本(ln.b.x)) // 10
}

值语义:改参数不影响实参

函数 平移(点 p, 整数 dx, 整数 dy) 点 {
    p.x = p.x + dx
    p.y = p.y + dy
    返回(p)
}

函数 演示() {
    点 a
    a.x = 1
    a.y = 1
    点 b = 平移(a, 3, 4)
    输出(到文本(a.x)) // 1
    输出(到文本(b.x)) // 4
}

数组元素作实参

函数 打印x(点 p) {
    输出(到文本(p.x))
}

函数 演示() {
    点 arr[] = [{3, 4}, {5, 6}]
    打印x(arr[1])
    打印x(arr[2])
}

调用结果取字段

点 t = 加({1, 2}, {3, 4})
输出(到文本(t.x))

(若版本支持调用结果直接 . 字段也可;稳妥写法是先赋给临时变量。)