Как проверить атрибуты структуры / изменяемой структуры в Julia

#julia

#джулия

Вопрос:

У меня есть структура, определенная следующим образом:

 julia> struct test
           test1::Int64
           test2::Float64
       end
 

Я хочу иметь возможность видеть имена атрибутов в структуре, а также тип. Какой самый простой способ сделать это? Я знаю, что могу сделать:

 julia> t = test(1,1.0)
test(1, 1.0)

julia> fieldnames(typeof(t))
(:test1, :test2)
 

но я хотел бы видеть имя и тип атрибута вместе.

Ответ №1:

Используйте fieldtypes(typeof(t))

 julia> DataFrame(name=[fieldnames(typeof(t))...], type=[fieldtypes(typeof(t))...])
2×2 DataFrameRow │ name   │ type
│     │ SymbolDataType │
├─────┼────────┼──────────┤
│ 1   │ test1  │ Int64    │
│ 2   │ test2  │ Float64

Что касается другого ответа, обратите внимание, что dump всегда выводится вся структура данных, что не подходит для полей, имеющих сложные типы. Попробуйте выполнить dump в структуре, в которой есть Dict поле, чтобы выяснить мою точку зрения (или просто попробуйте в консоли) dump(Dict()) .

Ответ №2:

Самый простой способ сделать это — использовать dump метод:

справка?> поиск дампа: дамп

дамп(x; maxdepth=8)

Показать каждую часть представления значения. Глубина вывода усекается на уровне maxdepth.

Итак, в этом случае это покажет:

 julia> dump(t)
test
  test1: Int64 1
  test2: Float64 1.0
 

Смотрите Здесь для получения более подробной информации: https://docs.julialang.org/en/v1/base/io-network/#Base.dump