カスタム `show`が定義されている場合、複合型のデフォルトの印刷を表示します


8

パッケージ作成者が複合タイプのカスタムshow関数を定義している場合、デフォルトを簡単に印刷する方法はありますshowか?つまり、カスタマイズの前に複合型に対してジュリアは何を示していたでしょうか?

Junoを使用して複雑な関数のコードをステップスルーして試してみましたが、データ表現を確認したいのですstructが、カスタム印刷のために完全な構造が表示されません。

回答:


8

使用できますBase.show_default

たとえばMeasurements.jl、次のMeasurementタイプのカスタム印刷を定義します。

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

を使用invokeして、デフォルトのshowメソッドが呼び出されることを確認できます。

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)

またdump、これはその正確なシナリオで非常に役立つ可能性があることに注意してください。

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

4
はい、特定のユースケースdumpのために行く方法です。
ジョルダーノ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.