如何在Julia中提取参数类型的基本类型(名称)?

3
有时候,访问类型的非参数化版本会很有帮助。例如,如果我有一些foo::Foo{A,B},那么像basetype(foo::Foo{args...}) = Foo这样的东西会很好。Julia是否提供类似的功能?
2个回答

6

您可以在参数类型中使用Base.typename。它以Core.TypeName的形式返回类型名称,您可以使用其wrapper字段提取类型。

julia> Base.typename(typeof([1])).wrapper
Array

julia> Base.typename(Array{Int64, 1}).wrapper
Array

您还可以使用 T.name.wrapper 直接检索此信息,这可能会由 Julia 进行更好的优化,尽管这并不是一个好主意。请参阅相关问题此处

0

如果您只需要一个字符串/符号表示,您也可以使用:

julia> nameof(Array{Int64, 1}
:Array

julia>nameof(Foo{A,B})
:Foo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接