# Assigning values to defined Tuple-array

**URL:** <https://discourse.julialang.org/t/assigning-values-to-defined-tuple-array/30026>\
**Category:** New to Julia\
**Tags:** indexing, array, tuple\
**Created:** [October 17, 2019, 2:17pm UTC](https://discourse.julialang.org/t/assigning-values-to-defined-tuple-array/30026 "2019-10-17T14:17:41Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jonas\_Hjulstad](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jonas_hjulstad/32/9146_2.png) [@Jonas\_Hjulstad](https://discourse.julialang.org/u/Jonas_Hjulstad)\
**Post date:** [October 17, 2019, 2:17pm UTC](https://discourse.julialang.org/t/assigning-values-to-defined-tuple-array/30026/1 "2019-10-17T14:17:42Z")

</div>

I am trying to create a tuple-array without assigning values to the tuples. Declaring tuples as an array runs smoothly:

```julia
tuples = Array{Tuple{Int, Int},2}
tuples[1] = (1,2)

```

However, trying to index any elements gives a “no matching setindex”-error. What happens when i declare tuples as an array, and why is it different than directly assigning values upon initialization?

Example, this runs fine:

```julia
tuples = [(1,2),(3,2)]
tuples[2]

```

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [October 17, 2019, 2:25pm UTC](https://discourse.julialang.org/t/assigning-values-to-defined-tuple-array/30026/2 "2019-10-17T14:25:12Z")

</div>

Not sure I understand the question - are you saying what isn’t working is assigning to an index of an element of your array of tuples like

```julia
tup_arr = [(1,2), (3,4)]
tup_arr[1][1] = 5

```

?

This indeed throws a `MethodError: no method matching setindex!`, but this is unrelated to having an array of arrays and simply due to the fact that tuples are immutable:

```julia
t = (1,2)
t[1] = 5 # MethodError

```

---

<div class="post-metadata">

**Author:** ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)\
**Post date:** [October 17, 2019, 5:22pm UTC](https://discourse.julialang.org/t/assigning-values-to-defined-tuple-array/30026/3 "2019-10-17T17:22:15Z")

</div>

> [@Jonas\_Hjulstad](#):
>
> Array{Tuple{Int, Int},2}

This is a type, not an object.

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [October 17, 2019, 5:43pm UTC](https://discourse.julialang.org/t/assigning-values-to-defined-tuple-array/30026/4 "2019-10-17T17:43:57Z")

</div>

> [@yuyichao](#):
>
> > Array{Tuple{Int, Int},2}
> 
> This is a type, not an object.

To be more concrete, I think what you meant to write may have been something like

```julia
julia> tuples = Array{Tuple{Int, Int},2}(undef, 1, 1)
1×1 Array{Tuple{Int64,Int64},2}:
 (4627041296, 4630374544)

julia> tuples[1] = (1,2)
(1, 2)

```

---

<div class="post-metadata">

**Author:** ![Jonas\_Hjulstad](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jonas_hjulstad/32/9146_2.png) [@Jonas\_Hjulstad](https://discourse.julialang.org/u/Jonas_Hjulstad)\
**Post date:** [October 17, 2019, 5:55pm UTC](https://discourse.julialang.org/t/assigning-values-to-defined-tuple-array/30026/5 "2019-10-17T17:55:55Z")

</div>

Okay, so by following the typedef with (undef, n, m) it will create an empty nxm Tuple-array?

---

<div class="post-metadata">

**Author:** ![Mason](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mason/32/2423_2.png) [@Mason](https://discourse.julialang.org/u/Mason)\
**Post date:** [October 17, 2019, 5:57pm UTC](https://discourse.julialang.org/t/assigning-values-to-defined-tuple-array/30026/6 "2019-10-17T17:57:52Z")

</div>

It will create a `n*m` Tuple Array with ‘undefined’ contents. I.e. each element will just be a chunk of memory that has been interpreted as a `Tuple{Int, Int}`, so the contents will look like random garbage.

---

<div class="post-metadata">

**Author:** ![Seif\_Shebl](https://avatars.discourse-cdn.com/v4/letter/s/eada6e/32.png) [@Seif\_Shebl](https://discourse.julialang.org/u/Seif_Shebl)\
**Post date:** [October 18, 2019, 10:55am UTC](https://discourse.julialang.org/t/assigning-values-to-defined-tuple-array/30026/7 "2019-10-18T10:55:59Z")

</div>

The beautiful thing about Julia is that you are not forced to fiddle with types if you don’t want to. In your case, for example, you can create a `2-by-3` array of tuples easily like this:

```julia
julia> tuples = similar([(0,0)], 2,3)
2×3 Array{Tuple{Int64,Int64},2}:
 (112936112, 94765632) (94765632, 112941360) (112514192, 112942032)
 (112514192, 112937040) (112941488, 112115216) (94765632, 4294967298)

```
