Pertanyaan Bagaimana cara membuat deskripsi fungsi yang didefinisikan pengguna (“docstrings”) tersedia untuk julia REPL?


Bagaimana fungsi yang ditentukan pengguna (mis f) memiliki cetakan yang berarti ketika diperiksa melalui REPL menggunakan ?fatau help(f)

Misalnya bayangkan saya menulis funciton berikut

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

Jika saya memuat ini ke sesi julia dan coba help(f) Saya mendapatkan yang berikut:

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

Bagaimana jika sebaliknya saya ingin melihat sesuatu seperti

julia> help(f)
f

   Compute 2 times x minus y squared

di mana deskripsi "Hitung 2 kali x dikurangi y kuadrat" ditulis di suatu tempat. Saya menduga jawaban atas pertanyaan saya dapat ditentukan dari jawaban atas pertanyaan "Di mana letak deskripsi harus ditulis?"


Sebagai contoh, jika saya ingin melakukan hal yang sama dengan python, saya dapat mendefinisikan fungsi dan menempatkan deskripsi sebagai docstring:

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

yang akan membuat deskripsi saya segera tersedia ketika saya mengetik help(f) atau f? dari IPython.


75
2017-11-06 19:40


asal


Jawaban:


Anda dapat menggunakan @doc makro dalam versi Julia 0.4 (Oktober 2015) dan di atas.

% 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: Seperti yang ditunjukkan oleh @Harrison Grodin, versi 0,5 dan di atasnya mendukung sintaks yang disingkat serta Markdown, LaTEX, dan beberapa barang lainnya:

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

Ada lebih banyak detail dalam dokumentasi.


45
2017-12-01 05:58



Di Julia v0.5 +, Anda dapat menulis string multiline di atas definisi fungsi. (Tidak perlu @doc lagi.)

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

Untuk informasi lebih lanjut tentang cara memformat dokumen Anda dengan benar, lihat pejabat Dokumentasi Julia.


10
2018-02-17 06:10