第一个程序
新建一个空目录,在里面建一个文本文件 helloworld.ms。MushScript 程序代码需要是扩展名为 .ms 的 UTF-8 文本文件。
helloworld.ms
func main() -> int
{
print("Hello, world");
return 0;
}$ mush run helloworld.ms
Hello, world程序打印一行字,然后退出。这是一个完整的开发流程:写文件 → 运行 → 看输出。
逐行说明
- 第 1 行
func main() -> int:声明一个名叫main的函数。main是约定的入口名:mush run从这里开始执行。-> int表示它返回一个整数。 - 第 2 行和第 5 行:一对花括号,框出函数体。花括号不可省略,即使函数体只有一句话。
- 第 3 行:调用
print,把括号里的内容打印出来,末尾自动换行。行尾的分号表示一条语句结束,每条语句都要有。 - 第 4 行:
return 0;把 0 作为退出码返回给操作系统。这个数字成为程序的退出码(Exit Code),0表示「一切正常」。
print 直接接受数字、布尔、字符串等任意值,不必先转成文本。
注释
注释有三种写法,编译器一律忽略:
// 行注释:到行尾为止
/* 块注释:可跨行,
而且 /* 支持嵌套 */,深度计数,配对才闭合 */
/// 文档注释:附着到下一声明,为语言服务提供文档说明- 块注释支持嵌套
///文档注释是独立于//的种类,语义是「给下一声明的说明」
第一次读错误信息
把 print 拼成 pritn 再运行,会见到一条编译错误:
$ mush run helloworld.ms
error MS3001: Undefined name 'pritn'.
--> helloworld.ms:3:5
|
3 | pritn("Hello, world");
| ^^^^^错误信息固定三段:发生了什么错误(错误码加一句话说明)、在哪个文件的哪一行(--> 指到行:列)、一段源码摘录并把出错字符标出来。
一条真实错误常引发多条连锁诊断;先修第一条,其余往往随之消失。
只想检查代码能不能编译、不想真正运行,用
mush check helloworld.ms。它跑同样的编译过程,但不执行。
注意
- 编译不通过时程序一行都不会执行,看到的输出永远来自完整编译通过的程序。
- 入口函数写不写
public都一样,因为main入口无视可见性修饰符,本参考手册统一省略。 - 后续页面用「示例 + 输出」的方式展示行为,片段均可运行。
最后更新于 2026年10月7日
