为什么Julia Documenter在文档测试中需要合格功能?

时间:2018-07-06 10:15:42

标签: namespaces julia doctest

尽管在各处都调用using my_module,但是我在Julia中进行的文档测试要求具有模块名称的资格。如果我不具备这些功能,我会得到

ERROR: UndefVarError: add not defined

这是出现此错误的设置。 tree的目录结构为:

.
|____docs
| |____make.jl
| |____src
| | |____index.md
|____src
| |____my_module.jl

文件docs/make.jl是:

using Documenter, my_module

makedocs(
    modules = [my_module],
    format = :html,
    sitename = "my_module.jl",
    doctest = true
)

文件docs/src/index.md是:

# Documentation

```@meta
CurrentModule = my_module
DocTestSetup = quote
    using my_module
end
```

```@autodocs
Modules = [my_module]
```

文件src/my_module.jl是:

module my_module

"""
    add(x, y)

Dummy function

# Examples
```jldoctest
julia> add(1, 2)
3
```
"""
function add(x::Number, y::Number)
    return x + y
end

end

如果我用src/my_module.jl使my_module.add(1,2)中的文档测试合格,那么它将正常工作。

如何避免在文档测试中限定函数名称?

2 个答案:

答案 0 :(得分:0)

使用setup name block

这未经测试,但是类似的东西应该可以工作:

module my_module

"""
    add(x, y)

Dummy function

# Examples
```@setup abc
import my_module: add
```

```jldoctest abc
julia> add(1, 2)
3
```
"""
function add(x::Number, y::Number)
    return x + y
end

end

答案 1 :(得分:0)

this thread中的注释之后,问题在于add函数没有导出,因此它没有与using合并。您可以在模块声明之后在src/my_module.jl顶部附近添加以下行:

export add

然后进行文档测试。