Comment les fonctions définies par l'utilisateur (par exemple f
) peuvent-elles avoir des impressions significatives lorsqu'elles sont inspectées via le REPL en utilisant ?f
ouhelp(f)
Par exemple, imaginez que j'écris la fonction suivante
function f(x::Float64, y::Float64)
return 2x - y^2
end
Si je charge ceci dans une session julia et que j'essaye, help(f)
j'obtiens ce qui suit:
julia> help(f)
f (generic function with 1 method)
Et si à la place je voulais voir quelque chose comme
julia> help(f)
f
Compute 2 times x minus y squared
où la description "Calculer 2 fois x moins y au carré" est écrite quelque part. J'imagine que la réponse à ma question peut être déterminée à partir de la réponse à la question "Où est le quelque part où la description doit être écrite?"
A titre d'exemple, si je voulais faire la même chose en python, je pourrais définir la fonction et mettre la description en docstring:
def f(x, y):
"""
Compute 2 times x minus y squared
"""
return 2 * x - y ** 2
ce qui rendrait ma description immédiatement disponible lorsque je tape help(f)
ou f?
depuis IPython.
Réponses:
Vous pouvez utiliser la
@doc
macro dans les versions 0.4 de Julia (octobre 2015) et supérieures.% 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: Comme indiqué par @Harrison Grodin, les versions 0.5 et supérieures prennent en charge une syntaxe abrégée ainsi que Markdown, LaTEX et quelques autres goodies:
""" 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
Il y a plus de détails dans la documentation .
la source
Dans Julia v0.5 + ( y compris les versions plus récentes de Julia comme 1.2+ ), vous pouvez écrire une chaîne multiligne au-dessus de la définition de la fonction. (Pas besoin de
@doc
plus.)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
Pour plus d'informations sur le formatage correct de vos docstrings, consultez la documentation officielle de Julia .
la source