function
boot.janet on line 1867 , column 1
(put-in x ks val )
Use the keys `ks` to put a value `val` into a nested spot in `x` .
Missing spots will be replaced with tables. Returns `x` modified.
`x` can be a suitable array , table or abstract type with `get` and
`put` methods.
`ks` can be an indexed or abstract type with suitable `get` and
`length` methods.
(def record @{:recipient @{:name "Bob" :age 60 } :sender @{:name "Alice" :age 21 }})
(put-in
record
[:sender :age ]
26 )
# @{:recipient @{:name "Bob" :age 60} :sender @{:name "Alice" :age 26}}
(put-in
record
[:recipient ]
@{:name "Carl" })
# @{:recipient @{:name "Carl"} :sender @{:name "Alice" :age 26}}
(put-in @{:a @{:aa 5 } :b @{:bb 6 }} [:c ] 9 ) # => @{:a @{:aa 5} :b @{:bb 6} :c 9}
(put-in @{:a @{:aa 5 } :b @{:bb 6 }} [:a :aa ] 9 ) # => @{:a @{:aa 9} :b @{:bb 6}}
(put-in @{:a @{:aa 5 } :b @{:bb 6 }} [:a :cc :ddd ] 9 ) # => @{:a @{:cc @{:ddd 9} :aa 5} :b @{:bb 6}}
(put-in @[:a :b @[:aa :bb :cc ]] [2 1 ] :zz ) # => @[:a :b @[:aa :zz :cc]]
(put-in @[:a :b @[:aa :bb :cc ]] [5 ] :z ) # => @[:a :b @[:aa :bb :cc] nil nil :z]
(put-in @[:a :b @[:aa :bb :cc ]] [4 0 ] :zz ) # => @[:a :b @[:aa :bb :cc] nil @{0 :zz}]
(put-in @[:a :b @[:aa :bb :cc ]] [4 :yy ] :zz ) # => @[:a :b @[:aa :bb :cc] nil @{:yy :zz}]