Як зробити описи функцій, визначених користувачем (“docstrings”), доступними Julia REPL?


91

Як можуть визначені користувачем функції (скажімо f) мати значущі роздруківки під час перевірки за допомогою REPL за допомогою ?fабоhelp(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

де десь написаний опис «Обчисли 2 рази х мінус у квадраті». Я припускаю, що відповідь на моє запитання можна визначити із відповіді на питання "Де десь слід писати опис?"


Наприклад, якби я хотів зробити те ж саме в python, я міг би визначити функцію і помістити опис як документ:

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

що зробить мій опис відразу доступним, коли я набираю текст help(f)або f?з IPython.


11
Я не думаю, що ти ще можеш цього зробити. Див. Наприклад: github.com/JuliaLang/julia/issues/3988
ivarne

2
Це відбудеться найближчим часом. Див. Обговорення тут
spencerlyon2

Відповіді:


56

Ви можете використовувати @docмакрос у версії Julia 0.4 (жовтень 2015 р.) Та вище.

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

Детальніше в документації .


30

У Julia v0.5 + ( включаючи новіші версії Julia, такі як 1.2+ ) ви можете написати багаторядковий рядок над визначенням функції. (Більше не потрібно @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

Для отримання додаткової інформації щодо правильного форматування ваших документальних матеріалів, дивіться офіційну документацію Джулії .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.