首页 文章

如何为julia REPL提供用户定义的函数描述(“docstrings”)?

提问于
浏览
81

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

例如,想象一下我写下面的函数

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

如果我把它加载到julia会话并尝试 help(f) 我得到以下内容:

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

如果相反我想看到类似的东西怎么办?

julia> help(f)
f

   Compute 2 times x minus y squared

其中描述“计算2次x减y平方”的描述 . 我猜我的问题的答案可以从问题的答案中确定:“描述应该写在哪里?”


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

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

当我从IPython输入 help(f)f? 时,这将使我的描述立即可用 .

2 回答

  • 49

    您可以在Julia版本0.4(2015年10月)及更高版本中使用@doc宏 .

    % 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.
    

    Edit: 正如@Harrison Grodin所指出的,0.5及以上版本支持缩写语法以及Markdown,LaTEX和其他一些好东西:

    """
    Calculate the left Riemann sum[^1] approximating ``\int_a^b f(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
    

    还有更多细节in the documentation .

  • 13

    在Julia v0.5中,您可以在函数定义上面编写多行字符串 . (不再需要 @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
    

    有关正确格式化文档字符串的详细信息,请参阅官方Julia Documentation .

相关问题