Zeigt den Standarddruck von zusammengesetzten Typen an, wenn eine benutzerdefinierte "Show" definiert ist


8

Wenn ein Paketautor eine benutzerdefinierte showFunktion für seinen zusammengesetzten Typ definiert hat, gibt es eine Möglichkeit, die Standardeinstellung einfach zu drucken show? Das heißt, was Julia vor der Anpassung für den zusammengesetzten Typ gezeigt hätte?

Ich verwende Juno, um den Code komplexer Funktionen zu durchlaufen und zu versuchen, und ich möchte die Datendarstellung sehen, aber die vollständige Struktur der structwird aufgrund des benutzerdefinierten Drucks nicht angezeigt.

Antworten:


8

Sie können verwenden Base.show_default.

Definiert beispielsweise Measurements.jlbenutzerdefiniertes Drucken des MeasurementTyps:

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

Sie können invokedamit sicherstellen, dass die Standardmethode showaufgerufen wird:

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)

Beachten Sie auch, dass dumpdies in genau diesem Szenario sehr nützlich sein kann:

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

4
Ja, für den spezifischen Anwendungsfall dumpist der richtige Weg.
Giordano
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.