# Modifying vector in an immutable

**URL:** https://discourse.julialang.org/t/modifying-vector-in-an-immutable/1339
**Category:** General Usage
**Tags:** question
**Created:** [January 7, 2017, 1:41pm UTC](https://discourse.julialang.org/t/modifying-vector-in-an-immutable/1339 "2017-01-07T13:41:06Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [January 7, 2017, 1:41pm UTC](https://discourse.julialang.org/t/modifying-vector-in-an-immutable/1339/1 "2017-01-07T13:41:06Z")

</div>

When an `immutable` has a `Vector` field, is it allowed to modify that using `!` functions ([like these](http://docs.julialang.org/en/stable/stdlib/collections/#dequeues))? My understanding is that even if the underlying memory is remapped (eg because the vector grows or shrinks too much), it is still the “same” vector, so it is OK. MWE:

```julia
immutable Foo
    v::Vector
end
foo = Foo([])
push!(foo.v, 1)

```

---

<div class="post-metadata">

### Author: ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)
#### Post date: [January 7, 2017, 1:53pm UTC](https://discourse.julialang.org/t/modifying-vector-in-an-immutable/1339/2 "2017-01-07T13:53:23Z")

</div>

It is still the same julia object. This is perfectly fine.

---

<div class="post-metadata">

### Author: ![dpsanders](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpsanders/32/3573_2.png) [@dpsanders](https://discourse.julialang.org/u/dpsanders)
#### Post date: [January 7, 2017, 4:44pm UTC](https://discourse.julialang.org/t/modifying-vector-in-an-immutable/1339/3 "2017-01-07T16:44:24Z")

</div>

Note that you (almost) always want to strictly type fields in a type definition:

```julia
immutable Foo
    v::Vector{Float64}
end

```

or parametrically:

```julia
immutable Foo{T}
    v::Vector{T}
end

```

---

<div class="post-metadata">

### Author: ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)
#### Post date: [January 7, 2017, 5:49pm UTC](https://discourse.julialang.org/t/modifying-vector-in-an-immutable/1339/4 "2017-01-07T17:49:26Z")

</div>

Definitely — I was just keeping the example minimal.
