# Constructing SVector with a loop

**URL:** <https://discourse.julialang.org/t/constructing-svector-with-a-loop/15372>\
**Category:** General Usage\
**Tags:** question\
**Created:** [September 23, 2018, 11:00am UTC](https://discourse.julialang.org/t/constructing-svector-with-a-loop/15372 "2018-09-23T11:00:16Z")\
**Posts on this page:** 1\
**Showing post:** 5

<div class="post-metadata">

**Author:** ![tkoolen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkoolen/32/1603_2.png) [@tkoolen](https://discourse.julialang.org/u/tkoolen)\
**Post date:** [September 23, 2018, 3:01pm UTC](https://discourse.julialang.org/t/constructing-svector-with-a-loop/15372/5 "2018-09-23T15:01:16Z")

</div>

Probably not a valid solution, but fun anyway:

```julia
function SFibNtuple(::Val{S}) where S
    val_i_minus_2 = Ref(1)
    val_i_minus_1 = Ref(1)
    tup = ntuple(S) do i
        if i == 1 || i == 2
            1
        else
            val = val_i_minus_2[] + val_i_minus_1[]
            val_i_minus_2[] = val_i_minus_1[]
            val_i_minus_1[] = val
        end
    end
    SVector(tup)
end

```

This infers up to `Val(10)`.

```julia
using BenchmarkTools
@btime SFibNtuple(Val(10));

```

prints `1.702 ns (0 allocations: 0 bytes)`.

---

_[View the full topic](https://discourse.julialang.org/t/constructing-svector-with-a-loop/15372)._
