如何使用户定义的函数描述(“docstrings”)可用于茱莉亚REPL?

用户定义的函数(如f )在通过REPL使用?fhelp(f)检查时如何输出有意义的打印输出?f

例如,假设我写了以下函数

 function f(x::Float64, y::Float64) return 2x - y^2 end 

如果我加载到一个茱莉亚会议,并尝试help(f)我得到以下几点:

 julia> help(f) f (generic function with 1 method) 

如果我想看到类似的东西呢?

 julia> help(f) f Compute 2 times x minus y squared 

其中描述“Compute 2 times x minus y squared”被写在某处。 我猜测我的问题的答案可以从“这个描述应该写在哪里?”这个问题的答案来确定。


举例来说,如果我想在python中做同样的事情,我可以定义函数并将描述作为一个文档string:

 def f(x, y): """ Compute 2 times x minus y squared """ return 2 * x - y ** 2 

当我inputhelp(f)f?时,这将使我的描述立即可用f? 来自IPython。

您可以在Julia版本0.4(2015年10月)及以上版本中使用@docmacros。

 % julia _ _ _ _(_)_ | A fresh approach to technical computing (_) | (_) (_) | Documentation: http://docs.julialang.org _ _ _| |_ __ _ | Type "?help" for help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 0.4.0 (2015-10-08 06:20 UTC) _/ |\__'_|_|_|\__'_| | Official http://julialang.org/ release |__/ | x86_64-apple-darwin13.4.0 julia> @doc """ Compute 2 times x minus y squared. """ -> function f(x::Float64, y::Float64) return 2x - y^2 end f (generic function with 1 method) julia> @doc f Compute 2 times x minus y squared. 

编辑:正如@哈里森·格罗丁(@Harrison Grodin)所指出的,版本0.5及以上版本支持缩写语法以及Markdown,LaTEX和其他一些好东西:

 """ Calculate the left Riemann sum[^1] approximating ``\int_a^bf(x) dx = F(b) - F(a).`` [^1]: Thomas G., Finney R. (1996), Calculus and Analytic Geometry, Addison Wesley, ISBN 0-201-53174-7 """ function rs(a, b, d, f) end 

文档中有更多的细节。

在Julia v0.5 +中,你可以在函数定义上面写一个多行string。 (不再需要@doc了。)

 julia> """ cube(x) Compute the cube of `x`, ``x^3``. # Examples ```jldoctest julia> cube(2) 8 ``` """ function cube(x) x^3 end cube help?> cube search: Cdouble isexecutable Ac_mul_B Ac_mul_Bc Ac_mul_B! Ac_mul_Bc! cumsum_kbn cube(x) Compute the cube of x, x^3. Examples ≡≡≡≡≡≡≡≡≡≡ julia> cube(2) 8 

有关正确格式化文档string的更多信息,请参阅官方的Julia文档 。