2016-09-12 15 views
4

私は、関数名、 をとり、関数の他のバージョンをいくつか宣言するマクロを書いています。 これらのバリエーションに元のメソッドと同じドキュメント文字列、 を付け加えたいと思います。どのようにプログラムでDocStringにアクセスできますか?

これを行うには、元のメソッドのdocstringを取得する必要があります。私が行うことができるように

get_docstring(functionname::Symbol, argtypes)::String

julia> s=get_docstring(:values,(Associative,))、その後sに設定されます:

だから私は探しています、関数である

s=""" 
    values(a::Associative) 
Return an iterator over all values in a collection. 
`collect(values(d))` returns an array of values. 
```jldoctest 
julia> a = Dict('a'=>2, 'b'=>3) 
Dict{Char,Int64} with 2 entries: 
    'b' => 3 
    'a' => 2 
julia> collect(values(a)) 
2-element Array{Int64,1}: 
3 
2 
``` 
""" 
+2

「Base.Docs.doc」 –

答えて

3

ます@docマクロを使用できますが、文字列ではなく、マークダウンオブジェクトを返します。

julia> @doc "foo int" -> 
     foo(x::Int) = x 
foo 

julia> @doc "foo float" -> 
     foo(x::Float64) = x 
foo 

julia> @doc "foo sym" -> 
     foo(x::Symbol) = x 
foo 

julia> @doc "foo x, y" -> 
     function foo(x, y) x, y end 
foo 

julia> @doc foo 
    foo int 

    foo float 

    foo sym 

    foo x, y 

julia> typeof(ans) 
Base.Markdown.MD 

julia> @doc foo(::Int) 
    foo int 

julia> @doc foo(::Float64) 
    foo float 

julia> @doc foo(::Symbol) 
    foo sym 

julia> md = @doc foo(::Any, ::Any) 
    foo x, y 

julia> md.content 
1-element Array{Any,1}: 
foo x, y 

julia> md.content[1] 
    foo x, y 

julia> md.content[1].content 
1-element Array{Any,1}: 
Base.Markdown.Paragraph(Any["foo x, y"]) 

julia> md.meta 
Dict{Any,Any} with 3 entries: 
    :typesig => Tuple{Any,Any} 
    :results => Base.Docs.DocStr[Base.Docs.DocStr(svec("foo x, y"),foo x, y… 
    :binding => foo 

julia> 
関連する問題