# Make @with\_kw structure display with detail all its parameters

**URL:** <https://discourse.julialang.org/t/make-with-kw-structure-display-with-detail-all-its-parameters/109731>\
**Category:** General Usage\
**Tags:** parametersjl, pretty-printing\
**Created:** [February 5, 2024, 1:22pm UTC](https://discourse.julialang.org/t/make-with-kw-structure-display-with-detail-all-its-parameters/109731 "2024-02-05T13:22:05Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![K5Julien](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/k5julien/32/210626_2.png) [@K5Julien](https://discourse.julialang.org/u/K5Julien)\
**Post date:** [February 5, 2024, 1:22pm UTC](https://discourse.julialang.org/t/make-with-kw-structure-display-with-detail-all-its-parameters/109731/1 "2024-02-05T13:22:05Z")

</div>

Suppose that I use `Parameters.jl` and the following `@with_kw` structure:

```julia
using Parameters
using Dates
@with_kw struct Params @deftype Int
    #PARAMETERS
    foo = 5
    bar::Dict{String,Int} = Dict("a"=>0,"b"=>1)
    time_limit::Period = Minute(30)
end

```

When creating an instance of this struct:

```julia
pars = Params()

```

When printing `print(pars)`, I get the following:

```julia
Params
foo: Int64 5
bar: Dict{String, Int64}
time_limit: Minute

```

Which is fine for `foo` but not for `bar` and `time_limit`.

I would prefer (and also expect) the following that I hand typed:

```julia
Params
foo: Int64 5
bar: Dict{String, Int64} Dict{String, Int64} with 2 entries:  
 "b" => 1
 "a" => 0
time_limit: Minute 30 minutes 

```

Is that easily achievable? Why is the default printing method for a @with\_kw struct does not display with details every types of variables?

---

<div class="post-metadata">

**Author:** ![abraemer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abraemer/32/51403_2.png) [@abraemer](https://discourse.julialang.org/u/abraemer)\
**Post date:** [February 5, 2024, 1:44pm UTC](https://discourse.julialang.org/t/make-with-kw-structure-display-with-detail-all-its-parameters/109731/2 "2024-02-05T13:44:45Z")

</div>

Printing usually does not recurse into subfield. But I think PrettyPrinting.jl might be able to achieve what you want with relative ease.

---

<div class="post-metadata">

**Author:** ![K5Julien](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/k5julien/32/210626_2.png) [@K5Julien](https://discourse.julialang.org/u/K5Julien)\
**Post date:** [February 5, 2024, 4:43pm UTC](https://discourse.julialang.org/t/make-with-kw-structure-display-with-detail-all-its-parameters/109731/3 "2024-02-05T16:43:50Z")

</div>

Thank you for your reply.  
I tried:

```julia
using PrettyPrinting
pprint(pars)

```

However, the output is the same as print(pars)

```julia
Params
foo: Int64 5
Dict{String, Int64}
time_limit: Minute     

```

Did I miss something?

---

<div class="post-metadata">

**Author:** ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)\
**Post date:** [February 5, 2024, 6:28pm UTC](https://discourse.julialang.org/t/make-with-kw-structure-display-with-detail-all-its-parameters/109731/4 "2024-02-05T18:28:39Z")

</div>

isnt it `show` instead?

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [February 5, 2024, 10:09pm UTC](https://discourse.julialang.org/t/make-with-kw-structure-display-with-detail-all-its-parameters/109731/5 "2024-02-05T22:09:34Z")

</div>

Try PrettyPrint.jl:

```julia
using PrettyPrint
pprint(pars)
# result:
Params( 
  foo=5,
  bar={"b" : 1, "a" : 0},
  time_limit=Minute(value=30,),
)

```
