1. ホーム
  2. julia

[解決済み] ユーザー定義関数の説明文("docstrings")をjulia REPLで利用可能にする方法とは?

2023-01-13 02:54:25

質問

ユーザ定義関数(例えば f を使用して REPL で検査したときに、意味のある出力が得られるのでしょうか? ?f または help(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

xの2倍からyの2乗を引いたものを計算する」という記述がどこかに書かれているのでしょうか?私の質問の答えは、"記述が書かれるべき場所はどこですか".の答えから判断できると推測されます。


例として、もし私がpythonで同じことをしたかったら、関数を定義して、説明をdocstringとして置くことができます。

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

と入力すると、私の記述がすぐに利用できるようになります。 help(f) または f? をIPythonから呼び出すことができます。

どのように解決するのですか?

あなたは @doc マクロはJuliaバージョン0.4(2015年10月)以降で使用可能です。

% 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

さらに詳しい情報があります があります。 .