# zeros(Float64, 2) or zeros(2, Float64)

**URL:** <https://discourse.julialang.org/t/zeros-float64-2-or-zeros-2-float64/109283>\
**Category:** New to Julia\
**Tags:** question\
**Created:** [January 26, 2024, 2:02am UTC](https://discourse.julialang.org/t/zeros-float64-2-or-zeros-2-float64/109283 "2024-01-26T02:02:30Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jiang\_ming\_zhang](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jiang_ming_zhang/32/204063_2.png) [@jiang\_ming\_zhang](https://discourse.julialang.org/u/jiang_ming_zhang)\
**Post date:** [January 26, 2024, 2:02am UTC](https://discourse.julialang.org/t/zeros-float64-2-or-zeros-2-float64/109283/1 "2024-01-26T02:02:30Z")

</div>

```julia
julia> a = zeros(Float64, 2)
2-element Vector{Float64}:
 0.0
 0.0

julia> a = zeros(2, Float64 )
ERROR: MethodError: no method matching zeros(::Int64, ::Type{Float64})

Closest candidates are:
  zeros(::Union{Integer, AbstractUnitRange}...)
   @ Base array.jl:631

Stacktrace:
 [1] top-level scope
   @ REPL[15]:1

```

So the order of the parameters is essential? Is there any rule in construction such typical objects?

---

<div class="post-metadata">

**Author:** ![mbaz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbaz/32/17295_2.png) [@mbaz](https://discourse.julialang.org/u/mbaz)\
**Post date:** [January 26, 2024, 2:19am UTC](https://discourse.julialang.org/t/zeros-float64-2-or-zeros-2-float64/109283/2 "2024-01-26T02:19:32Z")

</div>

Yeah, the type always comes first.

---

<div class="post-metadata">

**Author:** ![mike.ingold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mike.ingold/32/203749_2.png) [@mike.ingold](https://discourse.julialang.org/u/mike.ingold)\
**Post date:** [January 26, 2024, 2:31am UTC](https://discourse.julialang.org/t/zeros-float64-2-or-zeros-2-float64/109283/3 "2024-01-26T02:31:43Z")

</div>

```julia
help?> zeros
search: zeros count_zeros set_zero_subnormals get_zero_subnormals leading_zeros trailing_zeros zero iszero RoundToZero

  zeros([T=Float64,] dims::Tuple)
  zeros([T=Float64,] dims...)

  Create an Array, with element type T, of all zeros with size specified by dims. See also fill, ones, zero.

```

Yes, `zero` is a function that constructs an array containing zeros, and the docstring indicates that it takes the element type as an optional first argument.

---

<div class="post-metadata">

**Author:** ![jiang\_ming\_zhang](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jiang_ming_zhang/32/204063_2.png) [@jiang\_ming\_zhang](https://discourse.julialang.org/u/jiang_ming_zhang)\
**Post date:** [January 26, 2024, 2:42am UTC](https://discourse.julialang.org/t/zeros-float64-2-or-zeros-2-float64/109283/4 "2024-01-26T02:42:27Z")

</div>

```julia
zeros([T=Float64,] dims::Tuple)

```

means I can invoke the function as

```julia
a = zeros(Float64, (2,3))

```

while

```julia
zeros([T=Float64,] dims...)

```

means I can invoke the function as

```julia
a = zeros(Float64, 2,3)

```

Is my understanding right?

---

<div class="post-metadata">

**Author:** ![mike.ingold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mike.ingold/32/203749_2.png) [@mike.ingold](https://discourse.julialang.org/u/mike.ingold)\
**Post date:** [January 26, 2024, 2:46am UTC](https://discourse.julialang.org/t/zeros-float64-2-or-zeros-2-float64/109283/5 "2024-01-26T02:46:25Z")

</div>

That is correct. Inside of a function definition, trailing dots `...` indicates a variable number of arguments ([docs for Varargs](https://docs.julialang.org/en/v1/manual/functions/#Varargs-Functions)).

In this case `zeros(Float64, 2, 3)` yields a two-dimensional array of size 2x3, `zeros(Float64, 2, 3, 4)` yields a three-dimensional array of size 2x3x4, etc.

---

<div class="post-metadata">

**Author:** ![baggepinnen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/baggepinnen/32/693_2.png) [@baggepinnen](https://discourse.julialang.org/u/baggepinnen)\
**Post date:** [January 26, 2024, 6:56am UTC](https://discourse.julialang.org/t/zeros-float64-2-or-zeros-2-float64/109283/6 "2024-01-26T06:56:56Z")

</div>

Here’s a description of the preferred order of function arguments  
[https://docs.julialang.org/en/v1/manual/style-guide/#Write-functions-with-argument-ordering-similar-to-Julia-Base](https://docs.julialang.org/en/v1/manual/style-guide/#Write-functions-with-argument-ordering-similar-to-Julia-Base)
