Files
endorphin-aster-vm/crates/compiler/examples/shadowing.endor
T

22 lines
1.0 KiB
Plaintext

// compiler/tests/pipeline.rs 加载模块并调用 main,检查函数值传参及局部名优先于全局声明。
// A parameter can shadow a module function, and functions are ordinary values.
// main 把此全局函数作为普通值传入 invoke;实际调用时返回收到的参数。
function echo(value: String): String {
// 恒等返回,不改变用于确认调用链的文本。
return value
}
// main 调用;参数 echo 遮蔽同名模块函数,value 保存待转发的字符串。
function invoke(echo: Callable, value: String): String {
// 从局部参数 echo 复制函数值,而非再次查找模块的同名全局。
let chosen = echo
// 经局部 chosen 间接调用函数,把 value 作为实参并返回调用结果。
return chosen(value)
}
// 宿主/测试入口,先取得全局 echo 函数值,再传给 invoke 的同名参数。
function main(): String {
// invoke 内部用局部参数解析 echo,最终应原样返回这段文本。
return invoke(echo, "局部名称优先")
}