W jaki sposób funkcje zdefiniowane przez użytkownika (powiedzmy f
) mogą mieć znaczące wydruki podczas kontroli za pomocą REPL za pomocą ?f
lubhelp(f)
Na przykład wyobraź sobie, że piszę następującą funkcję
function f(x::Float64, y::Float64)
return 2x - y^2
end
Jeśli załaduję to do sesji julii i spróbuję help(f)
, otrzymam:
julia> help(f)
f (generic function with 1 method)
A co jeśli zamiast tego chciałbym zobaczyć coś takiego
julia> help(f)
f
Compute 2 times x minus y squared
gdzie opis „Oblicz 2 razy x minus y do kwadratu” jest gdzieś zapisany. Domyślam się, że odpowiedź na moje pytanie można określić na podstawie odpowiedzi na pytanie „Gdzie jest miejsce, w którym należy napisać opis?”
Przykładowo, gdybym chciał zrobić to samo w Pythonie, mógłbym zdefiniować funkcję i umieścić opis jako ciąg dokumentów:
def f(x, y):
"""
Compute 2 times x minus y squared
"""
return 2 * x - y ** 2
co sprawiłoby, że mój opis byłby natychmiast dostępny podczas pisania help(f)
lub f?
z IPythona.
Odpowiedzi:
@doc
Makra można używać w Julii w wersji 0.4 (październik 2015) i nowszych.% 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.
Edycja: jak wskazał @Harrison Grodin, wersje 0.5 i nowsze obsługują skróconą składnię, a także Markdown, LaTEX i kilka innych dodatków:
""" 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
Więcej szczegółów w dokumentacji .
źródło
W wersji Julia w wersji 0.5+ (w tym w nowszych wersjach Julii, takich jak 1.2+ ), możesz napisać ciąg wielowierszowy powyżej definicji funkcji. (Nie ma
@doc
już takiej potrzeby ).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
Więcej informacji na temat prawidłowego formatowania dokumentów można znaleźć w oficjalnej dokumentacji Julii .
źródło