Hiển thị in mặc định các loại hỗn hợp khi nó có định nghĩa `show` tùy chỉnh


8

Nếu một tác giả gói đã xác định một chức năng tùy chỉnhshow cho loại hỗn hợp của họ, có cách nào để dễ dàng in mặc định showkhông? Đó là, những gì Julia sẽ thể hiện cho loại hỗn hợp trước khi tùy chỉnh?

Tôi đang sử dụng Juno để duyệt mã của các hàm phức tạp để thử và tôi muốn xem biểu diễn dữ liệu nhưng cấu trúc đầy đủ của structkhông được hiển thị do in tùy chỉnh.

Câu trả lời:


8

Bạn có thể sử dụng Base.show_default.

Ví dụ: Measurements.jlxác định in tùy chỉnh Measurementloại:

julia> using Measurements

julia> x = 3 ± 0.1
3.0 ± 0.1

julia> Base.show_default(stdout, x)
Measurement{Float64}(3.0, 0.1, 0x0000000000000003, Measurements.Derivatives((3.0, 0.1, 0x0000000000000003) => 1.0))

6

Bạn có thể sử dụng invokeđể đảm bảo showphương thức mặc định được gọi là:

julia> struct Bar
       a
       b
       c
       end

julia> Base.show(io::IO, b::Bar) = print(io, "Bar")

julia> Bar(1,2,3)
Bar

julia> invoke(show, Tuple{IO, Any}, stdout, Bar(1,2,3))
Bar(1, 2, 3)

Cũng lưu ý rằng dumpcó thể rất hữu ích trong kịch bản chính xác đó:

julia> dump(Bar(1,2,3))
Bar
  a: Int64 1
  b: Int64 2
  c: Int64 3

4
Có, cho trường hợp sử dụng cụ thể dumplà cách để đi.
giordano
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.