继续使用刚才的工程。
我们这次的目标是:用main函数调用另一个包里的打印函数输出HelloWorld。
与前一节不同:
1:需要验证包调用的正确方式
2:需要编写一个可以公开的函数
3:需要对整包进行编译(不再采用单文件编译)
创建log目录,创建myprint.cj文件:
包名log,与文件夹名称一致。
myPrint为待调用的函数,msg为传入的参数。打印时以字符串插值的方式输出。
我们暂时没有考虑命名规范。仓颉语言中,需要包之间调用的函数需要声明为public。函数参数类型是后置的。
变量:
变量的用法更像是rust的变量声明方式,需要初始化变量,需要let a:Int32 = 0或var a:Int32=0,而不采用a:=0或int a = 0。不需要初始化的声明,采用var a:Int32这样的方式。
有初始化时,变量类型可以由编译器推断,写成let a = 0
变量没有所有权一类Rust为了避免gc而引入的复杂逻辑。
函数:
关键词func。默认函数是private。返回值举例:
func add(a: Int64, b: Int64): Int64
采用”:返回值类型”来定义函数返回值。
改造main.cj为:
完整的文件结构如下:
整包编译:
通过文档介绍我们看到cjpm工具是包管理工具,其中有build参数可以进行构建。
因此我们使用cjpm工具,先对包进行初始化,再进行构建。
1:cjpm init初始化生成cjpm.toml文件
2:cjpm build编译生成release
cjpm管理过程比较类似go语言,go build,go mod init。
cjpm也可以管理生成带调试信息的目标文件,命令为:cjpm build -g生成debug。
如果有压缩输出、静态链接等需求,就需要修改cjpm.toml进行实现了。暂且不细说。
生成路径如下: