# 基于全局环境的函数库开发流程
# 新建函数库
创建函数库,Ribbon 菜单栏进入主页 > 新建 > 新建 Julia 函数库选项卡,单击新建 Julia 函数库按钮,弹出新建函数库配置页面。如下图所示:
- 函数库保存目录:当前新建函数库的保存目录,Windows 默认为 "C:/Users/Public/TongYuan/.julia/dev";
- 函数库名称:当前新建函数库的名称,默认为 "Unnamed";
- 函数库说明:当前新建函数库的说明;
- 新建后是否安装此函数库:默认不勾选,若勾选此选项,单击“确认”后,自动安装此函数库;
- 新建后是否打开此函数库:默认勾选,单击“确认”后,资源管理器自动打开此函数库文件夹。
本示例中,修改函数库名称为TyExample,单击确认按钮,新建函数库配置页面关闭,TyExample 函数库创建成功。资源管理器自动打开 TyExample 文件夹。
新建函数库默认目录结构如下所示:
| 函数库目录结构 | 说明 |
|---|---|
| example | 示例文件夹,内含示例文件 demo.jl |
| src | 源码文件夹,内含函数库名 .jl |
| test | 单元测试文件夹,内含 runtests.jl |
| Project.toml | 项目文件 |
# 安装函数库
函数库创建完成后,进行函数库的源码开发。在进行源码开发之前,先安装函数库。
在资源管理器中右击 Project.toml,选择 Julia: 安装函数库(dev),安装函数库。
提示
使用工作流相关功能右键菜单,需要保证函数库文件夹整体在资源管理器中被打开。右击项目文件(Project.toml)或者函数库的直接子目录(example,src,test...)均可以获取工作流相关功能右键菜单。
# 开发函数库
# 编写代码文件
函数库的源码文件建议放在src文件夹下,源码开发的规范,请参见函数库开发规范。
本示例中,在src/TyExample.jl中新增函数my_add、write_csv,并对函数进行导出:
module TyExample
import CSV
# 导出函数
export greet, my_add, write_csv
greet() = "Hello, World!"
function my_add(a, b)
return a + b
end
const default_table = (col1=[1, 2, 3], col2=[4, 5, 6], col3=[7, 8, 9])
function write_csv(file::AbstractString, table=default_table; kwargs...)
open(file, "w") do io
CSV.write(io, table; kwargs...)
end
end
end # module
# 设置函数库依赖
在上面的函数开发中,需要调用第三方库 CSV,因此需要将 CSV 设置为本函数库的依赖项。
在资源管理器中右击 Project.toml,选择 Julia: 设置函数库依赖,在编辑器区域打开设置函数库依赖 Tab 页,支持用户设置依赖库的名称及兼容性。
提示
仅在全局环境中支持通过设置函数库依赖页面为函数库设置依赖及兼容性。
设置函数库依赖页面,默认展示当前函数库的依赖及兼容性。用户可以添加或修改当前函数库的依赖项,或为单元测试添加或修改依赖项。单击确定按钮,会对用户设置进行检查,包括:
- 依赖库名称:检查在全局环境中是否存在此函数库;
- 依赖库兼容性:检查依赖库的版本兼容性声明,是否符合兼容性规范 (opens new window)。
本示例中,单击依赖库右侧 + 按钮,依赖库表格新增空白行,在新增空白行中双击单元格输入依赖库名称 CSV,其兼容性声明可以选择填或不填。如果不填,表示本函数库与该依赖库的所有版本兼容。如果填写兼容性声明,如“0.9,0.10”,表示本函数库依赖 [0.9.0,0.11.0) 版本的 CSV。依赖库设置完成后,单击确认关闭页面。
添加依赖库 CSV 后,将自动更新函数库的项目文件 Project.toml,如下所示:
# 编写示例测试
函数库开发完成后,可以编写一些示例代码进行测试。建议在example/xxx.jl文件中编写示例代码。
本示例中,在example/demo.jl文件中编写示例代码,如下所示:
# 导入库
using TyExample
# case-1
out1_file = joinpath(@__DIR__, "out1.csv")
write_csv(out1_file)
# case-2
greet()
选择example/demo.jl,单击 Ribbon 栏运行按钮,在当前路径下生成out1.csv文件,终端输出"Hello, World!"。
# 使用函数库
函数库开发完成后,可以自己或分享给他人使用。但是需要注意的是,在使用前请确保已安装该函数库。
函数库的使用方法也很简单,即在 Julia REPL 或代码文件中,先通过import TyExample或using TyExample导入函数库,然后通过TyExample.write_csv(...)或write_csv(...)来调用接口函数。