2015-11-03 1 views

ответ

8

Вам необходимо перегрузить Base.show() для типа.

julia> import Base: show 

julia> type Foo 
      x 
      y 
      z 
     end 

julia> Base.show(io::IO, f::Foo) = println(io, "Foo: x=$(f.x), y=$(f.y), z=$(f.z)") 
show (generic function with 98 methods) 

julia> Foo("Hello ", "World", "!") 
Foo: x=Hello, y=World, z=! 
+3

Обратите внимание, что если вы перегружаете метод таким образом: 'Base.show', вам даже не нужно делать' import Base: show'. – SalchiPapa

+0

Вы также почти всегда хотите указать конкретные типы для всех полей типа: 'julia> type Foo x :: Int64; у :: Float64; z :: UTF8String end' –

+0

Сделав это, мой тип корректно отобразится как значение в dict. (Я не докучаю код публикации, потому что он использует SharedArray, размещаемый на удаленной машине через SLURM). Это не работает, если я называю «julia> x» напрямую. – conjectures