On Thursday, December 18, 2014 5:33:11 PM UTC-5, Steve Cordwell wrote:
>
>
> Hi John,
>
> `help(Array)` is telling you to use Array(SomeType, some_num_of_dims). If
> it was telling you about the type it would look more like this:
>
> > help(Int)
> DataType :
> Int64
>
>
> supertype: Signed
>
> The `Base.Array(type, dims)` line at the top of the help is giving you the
> calling signature. Since Array is both the type name and a method to
> construct arrays, it can be used with both {} and ().
>
Ah, both! I see. Also, I see that I can call `help()` on both types *and*
methods, but since "Array" is both, `help()` has to pick one, and I get the
Array *method* help text.
Still though, the example Stefan posted above doesn't look like it makes
sense to me. He wrote:
> > If you want to construct an uninitialized three value Int array, you
can do this:
> >
> > v = Array(Int, 3)
but `help(Array)` says I'm supposed to pass in "dims"; I'd assumed this
means the same thing as what `ndims` returns --- i.e., 1D (Vector), 2D
(Matrix), etc. But calling `Array(Int, 3)` returns a *1D* array, rather
than 3D. Am I misreading the docs for Base.Array()?
Try this:
>
> > typeof(Array{Int, 3})
> DataType
>
> > typeof(Array(Int, 3))
> Array{Int64,1}
>
> > typeof([1, 2, 3])
> Array{Int64,1}
>
>
Ok. The object I get back `Array(Int64, 3)` is of exactly the same type as
the one I get back from `[1, 2, 3]` (though of course the latter comes with
garbage values in it as Stefan noted.) I can `push!()` to both of them.
I also see that `Array` is an abstract (non-leaf) type, whereas `Array{Int,
3}` is a concrete type:
~~~
julia> isleaftype(Array)
false
julia> isleaftype(Array{Int, 3})
true
~~~
Thanks!
-- John