Julia 如何以编程方式访问docstring?

Julia 如何以编程方式访问docstring?,julia,docstring,Julia,Docstring,我在写一个宏,它取一个函数名, 并声明函数的两个其他版本。 我想给这些变体提供与原始方法相同的文档字符串, 也许有一些变化 为此,我需要检索原始方法的docstring 所以我要找的是一个函数: get_docstring(functionname::Symbol,argtypes)::String 这样我就可以: julia>s=get_docstring(:value,(Associative,),然后s将设置为: s=""" values(a::Associative) Retur

我在写一个宏,它取一个函数名, 并声明函数的两个其他版本。 我想给这些变体提供与原始方法相同的文档字符串, 也许有一些变化

为此,我需要检索原始方法的docstring

所以我要找的是一个函数:

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

这样我就可以:

julia>s=get_docstring(:value,(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
```
"""

您可以使用
@doc
宏,但它返回的不是字符串,而是标记对象:

julia>@doc“foo int”->
foo(x::Int)=x
福
朱莉娅>@doc“foo float”->
foo(x::Float64)=x
福
朱莉娅>@doc“foo sym”->
foo(x::Symbol)=x
福
朱莉娅>@doc“foo x,y”->
函数foo(x,y)x,y结束
福
朱莉娅>@docfoo
福因特
浮球
福赛姆
富x,y
julia>typeof(ans)
Base.Markdown.MD
朱莉娅>@docfoo(::Int)
福因特
朱莉娅>@docfoo(::Float64)
浮球
朱莉娅>@docfoo(::符号)
福赛姆
julia>md=@doc foo(::Any,::Any)
富x,y
朱莉娅>医学博士
一元数组{Any,1}:
富x,y
julia>md.content[1]
富x,y
julia>md.content[1]。content
一元数组{Any,1}:
基本.降价.段落(任何[“foo x,y”])
朱莉娅>医学博士
具有3个条目的Dict{Any,Any}:
:typesig=>元组{Any,Any}
:results=>Base.Docs.DocStr[Base.Docs.DocStr(svec(“foox,y”),foox,y…
:binding=>foo
朱莉娅>

Try
Base.Docs.doc