我正在写一个宏,它带有一个函数名, 并声明该函数的其他几个版本。 我想给这些变体提供与原始方法相同的文档字符串, 可能会有一些变化。
为此,我需要检索原始方法的文档字符串。
所以我要找的是一个功能:
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
```
"""
答案 0 :(得分:3)
您可以使用@doc
宏,但不是字符串,而是返回markdown对象:
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>