为什么 Julia Documenter 需要在 doc-tests 中限定函数?
Why does Julia Documenter require qualifying functions in doc-tests?
我在 Julia 中的文档测试需要对模块名称进行限定,尽管到处都调用 using my_module
。如果我不合格的功能,我得到
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)
限定文档测试,那么它工作正常。
如何避免在 doc-tests 中限定函数名称?
这是未经测试的,但像这样的东西应该可以工作:
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
根据中的注释,问题是add
函数没有被导出,所以它没有被纳入using
的范围。您可以在 src/my_module.jl
的顶部附近添加此行,在模块声明之后:
export add
然后文档测试工作。
我在 Julia 中的文档测试需要对模块名称进行限定,尽管到处都调用 using my_module
。如果我不合格的功能,我得到
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)
限定文档测试,那么它工作正常。
如何避免在 doc-tests 中限定函数名称?
这是未经测试的,但像这样的东西应该可以工作:
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
根据add
函数没有被导出,所以它没有被纳入using
的范围。您可以在 src/my_module.jl
的顶部附近添加此行,在模块声明之后:
export add
然后文档测试工作。