gpt4 book ai didi

julia - 如何以编程方式访问 DocStrings?

转载 作者:行者123 更新时间:2023-12-05 01:20:28 24 4
gpt4 key购买 nike

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

为此,我需要检索原始方法的文档字符串。

所以我要找的是一个函数:
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
```
"""

最佳答案

您可以使用 @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>

关于julia - 如何以编程方式访问 DocStrings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39445961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com