# Extend \`last\` to also work with arrays

**URL:** <https://discourse.julialang.org/t/extend-last-to-also-work-with-arrays/35100>\
**Category:** Internals & Design\
**Created:** [February 25, 2020, 2:38am UTC](https://discourse.julialang.org/t/extend-last-to-also-work-with-arrays/35100 "2020-02-25T02:38:45Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Alex1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alex1/32/11771_2.png) [@Alex1](https://discourse.julialang.org/u/Alex1)\
**Post date:** [February 25, 2020, 2:38am UTC](https://discourse.julialang.org/t/extend-last-to-also-work-with-arrays/35100/1 "2020-02-25T02:38:45Z")

</div>

It works with strings, but not with arrays, currently this would fail

`last([1, 2, 3, 4, 5], 2)`

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [February 25, 2020, 3:06am UTC](https://discourse.julialang.org/t/extend-last-to-also-work-with-arrays/35100/2 "2020-02-25T03:06:48Z")

</div>

This should work for vectors:

```julia
Base.last(v::AbstractVector, n::Integer) = @inbounds v[max(firstindex(v), end-n):end]

```

But note that this slicing makes a copy

---

<div class="post-metadata">

**Author:** ![nalimilan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nalimilan/32/147_2.png) [@nalimilan](https://discourse.julialang.org/u/nalimilan)\
**Post date:** [February 25, 2020, 8:56am UTC](https://discourse.julialang.org/t/extend-last-to-also-work-with-arrays/35100/3 "2020-02-25T08:56:17Z")

</div>

+1  
It would also be nice to add `last(x::AbstractVector, n::Integer)`. Would you file a PR?

---

<div class="post-metadata">

**Author:** ![JeffreySarnoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeffreysarnoff/32/1980_2.png) [@JeffreySarnoff](https://discourse.julialang.org/u/JeffreySarnoff)\
**Post date:** [February 25, 2020, 11:46am UTC](https://discourse.julialang.org/t/extend-last-to-also-work-with-arrays/35100/4 "2020-02-25T11:46:14Z")

</div>

> [@nalimilan](#):
>
> +1  
> It would also be nice to add `last(x::AbstractVector, n::Integer)` . Would you file a PR?

The PR should include `first(x::AbstractVector, n::Integer)` too.

---

<div class="post-metadata">

**Author:** ![giordano](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/giordano/32/2166_2.png) [@giordano](https://discourse.julialang.org/u/giordano)\
**Post date:** [February 25, 2020, 1:15pm UTC](https://discourse.julialang.org/t/extend-last-to-also-work-with-arrays/35100/5 "2020-02-25T13:15:10Z")

</div>

[https://github.com/JuliaLang/julia/pull/34868](https://github.com/JuliaLang/julia/pull/34868)

---

<div class="post-metadata">

**Author:** ![jne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jne/32/6341_2.png) [@jne](https://discourse.julialang.org/u/jne)\
**Post date:** [March 4, 2020, 12:06am UTC](https://discourse.julialang.org/t/extend-last-to-also-work-with-arrays/35100/6 "2020-03-04T00:06:45Z")

</div>

Curious, why is this feature limited to `AbstractVector` and not any ordered/iterable collection? (as the 1-arg `first`/`last` are described for…)

(Also, why is 1-arg `first` described for iterable collections, and 1-arg `last` for ordered collections?)

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [March 4, 2020, 1:37am UTC](https://discourse.julialang.org/t/extend-last-to-also-work-with-arrays/35100/7 "2020-03-04T01:37:59Z")

</div>

> [@jne](#):
>
> Curious, why is this feature limited to `AbstractVector` and not any ordered/iterable collection?

I agree: [https://github.com/JuliaLang/julia/pull/34868#issuecomment-594137553](https://github.com/JuliaLang/julia/pull/34868#issuecomment-594137553)
