我知道 Julia 中的块评论是正式的#= ... =#
。我还知道多行字符串是""" ... """
.
然而,我看到很多源代码""" ... """
在文件顶部使用来编写文档,而 Julia 似乎将其解释为注释(例如:Flux.jl)。
我的问题是:如果我使用""" ... """
任何类型的冗长多行注释(例如描述函数参数),使用 会不会有任何类型的缺点#= ... =#
?我想知道任何性能损失、解析过程中潜在的副作用等...除了个人喜好之外,为什么要使用#=
over ?"""
"""
函数前面是文档字符串,稍后 Julia 的帮助系统会看到这些文档字符串(例如,当您键入时?funnctionname
或可用于自动生成文档,该文档通常通过 Travis 等工具集成到 CI 流程中)。
要了解发生了什么,请尝试这个简单的 Julia 会话:
julia> """
myfoo(bar::AbstractVector)
Returns the length of `bar`
"""
myfoo(bar::AbstractVector) = length(bar)
myfoo
help?> myfoo
search: myfoo
myfoo(bar::AbstractVector)
Returns the length of bar
julia>
Run Code Online (Sandbox Code Playgroud)
Osk*_*ar 5
Julia 确实将三引号读取为字符串,而不是注释。字符串基础知识
Julia 还允许您为某些函数编写文档,您可以在该函数之上编写该文档。这可以是简单的或三重引用的。通常使用三引号,因为它们对于较长的文本块更有用。文档
Julia 使包开发人员和用户能够通过内置文档系统轻松记录函数、类型和其他对象。基本语法很简单:出现在顶层对象(函数、宏、类型或实例)之前的任何字符串都将被解释为对其进行记录(这些称为文档字符串)。请注意,文档字符串和记录对象之间不得插入空行或注释。
您要求进行绩效处罚。您可以尝试以下方法:
julia> using BenchmarkTools
julia> @btime """Hello
Hello
Hello"""
1.694 ns (0 allocations: 0 bytes)
"Hello\nHello\nHello"
julia> @btime #=Hello
Hello
Hello=#1
0.020 ns (0 allocations: 0 bytes)
Run Code Online (Sandbox Code Playgroud)
(我需要在注释后添加任何内容,因为否则语法将不正确)
所以你看,解析 aString
需要 1.6ns,而注释根本不需要任何时间。但是,文档字符串仅在加载包时解析一次,在执行某些函数时,它们不计算在内。所以除非你有这样的脚本
for i in 1:10^10
include("file_with_docstring.jl")
end
Run Code Online (Sandbox Code Playgroud)
文档字符串的解析时间不会对代码产生任何影响。因此,最好的方法是按照标准做法,并使用#
or#= [...] =#
和文档字符串使用简单或三引号" [...] "
,来编写注释""" [...] """
。
归档时间: |
|
查看次数: |
1073 次 |
最近记录: |