Julia REPL için kullanıcı tanımlı işlev açıklamaları ("docstrings") nasıl kullanılabilir hale getirilir?


91

Kullanıcı tanımlı işlevler (diyelim ki f), ?fveya kullanılarak REPL aracılığıyla incelendiğinde nasıl anlamlı çıktılara sahip olabilir?help(f)

Örneğin aşağıdaki işlevi yazdığımı hayal edin

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

Bunu bir Julia seansına yüklersem ve denersem help(f)aşağıdakileri alırım:

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

Ya bunun yerine şöyle bir şey görmek istersem

julia> help(f)
f

   Compute 2 times x minus y squared

burada "2 çarpı x eksi y kareyi hesapla" açıklaması bir yere yazılır. Tahmin ediyorum ki sorumun cevabının cevabından "Tarif nerede yazılmalı?" Sorusuna kadar belirlenebilir.


Örnek olarak, aynısını python'da yapmak isteseydim, işlevi tanımlayabilir ve açıklamayı bir docstring olarak koyabilirdim:

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

bu, açıklamamı yazdığımda help(f)veya f?IPython'dan hemen kullanılabilir hale getirir .


11
Bunu henüz yapabileceğini sanmıyorum. Örneğin bkz .: github.com/JuliaLang/julia/issues/3988
ivarne

2
Bu yakında gerçekleşecek. Tartışmayı burada
spencerlyon2

Yanıtlar:


56

@docMakroyu, 0.4 (Ekim 2015) ve üzeri Julia sürümlerinde kullanabilirsiniz .

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

Düzenleme: @Harrison Grodin tarafından belirtildiği gibi, 0.5 ve üzeri sürümler, Markdown, LaTEX ve diğer birkaç güzelliğin yanı sıra kısaltılmış bir sözdizimini destekler:

"""
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

Belgelerde daha fazla ayrıntı var .


30

Julia v0.5 + 'da ( 1.2+ gibi daha yeni Julia Sürümleri dahil ), işlev tanımının üstüne çok satırlı bir dize yazabilirsiniz. (Artık gerek @docyok.)

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

Doküman dizilerinizi doğru şekilde biçimlendirme hakkında daha fazla bilgi için resmi Julia Belgelerine bakın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.