如何在Julia中以编程方式确定未参数化的类型名称?

las*_*epe 2 julia

有时访问类型的非参数化版本会很有帮助。例如,如果我有一些foo::Foo{A,B}东西的话,那就很好basetype(foo::Foo{args...}) = Foo。朱莉娅会提供这样的东西吗?

hck*_*ckr 5

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

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

julia> Base.typename(Array{Int64, 1}).wrapper
Array
Run Code Online (Sandbox Code Playgroud)

您也可以直接检索此信息,Julia 可能会用T.name.wrapper它更好地对其进行优化,尽管这听起来似乎不是一个好主意。请参阅此处的相关问题。