# Multiple dispatch

**URL:** <https://discourse.julialang.org/t/multiple-dispatch/112541>\
**Category:** General Usage\
**Tags:** question\
**Created:** [April 4, 2024, 8:04pm UTC](https://discourse.julialang.org/t/multiple-dispatch/112541 "2024-04-04T20:04:50Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [April 4, 2024, 8:04pm UTC](https://discourse.julialang.org/t/multiple-dispatch/112541/1 "2024-04-04T20:04:50Z")

</div>

Is it possible to do a dispatch on a parameter of the types

- Vector{Float64} and
- Vector{Vector{Float64}}

?

---

<div class="post-metadata">

**Author:** ![abraemer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abraemer/32/51403_2.png) [@abraemer](https://discourse.julialang.org/u/abraemer)\
**Post date:** [April 4, 2024, 8:08pm UTC](https://discourse.julialang.org/t/multiple-dispatch/112541/2 "2024-04-04T20:08:33Z")

</div>

E.g.

```julia
foo(v::Vector{<:Number}) = sum(v)
foo(vv::Vector{<:Vector}) = sum(foo, vv)

```

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [April 4, 2024, 8:11pm UTC](https://discourse.julialang.org/t/multiple-dispatch/112541/3 "2024-04-04T20:11:43Z")

</div>

So this is a yes? Does a range count as Vector in this context?

---

<div class="post-metadata">

**Author:** ![abraemer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/abraemer/32/51403_2.png) [@abraemer](https://discourse.julialang.org/u/abraemer)\
**Post date:** [April 4, 2024, 8:13pm UTC](https://discourse.julialang.org/t/multiple-dispatch/112541/4 "2024-04-04T20:13:56Z")

</div>

Yes if types are different you can dispatch on them. A range should be an AbstractVector I think. You can check in the REPL (I am on mobile right now) with:

```julia-repl
julia> (1:5) isa AbstractVector

```

So you’d need a bit different types then what I wrote to make it work with ranges.

---

<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:** [April 4, 2024, 8:47pm UTC](https://discourse.julialang.org/t/multiple-dispatch/112541/5 "2024-04-04T20:47:44Z")

</div>

> [@abraemer](#):
>
> So you’d need a bit different types then what I wrote to make it work with ranges.

e.g.

```julia
foo(v::AbstractVector{<:Number}) = sum(v)
foo(vv::AbstractVector{<:AbstractVector}) = sum(foo, vv)

```
