Как программно определить непараметризованное имя типа в Юлии? - PullRequest
2 голосов
/ 04 мая 2019

Иногда было бы полезно иметь доступ к непараметризированной версии типа. Например. если у меня есть foo::Foo{A,B}, было бы неплохо иметь что-то вроде basetype(foo::Foo{args...}) = Foo. Джулия дает что-то подобное?

1 Ответ

5 голосов
/ 04 мая 2019

Вы можете использовать Base.typename с параметрическим типом.Он возвращает имя типа в форме Core.TypeName, и вы можете извлечь тип, используя его поле wrapper.

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

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

Вы также можете напрямую получить эту информацию с помощью T.name.wrapper который может быть лучше оптимизирован Джулией, хотя это не кажется хорошей идеей.Смотрите соответствующую проблему здесь .

...