> However, I supposed this other way should work too, but it didn't:
> names = Array{String};
> push!(names,"word2");
>
> It gives me the following error: "ERROR: `push!` has no method matching
> push!(::Type{Array{String,N}}, ::ASCIIString)"
>
> Why is String[] and Array(String,0) different from Array{String}?
`Array{String}` is a type (abstract at that), but you want an instance
of that type. So, what you would want to do is `Array{String,1}()`.
That ought to construct a array of strings with dimension 1 but doesn't.
At least that is what most constructors do, e.g. `Dict{Int,String}()`.
However, there are no array constructors which look like this, you
construct them with the syntax you used in the first two examples:
> names = String[];
> push!(names,"word1");
> names = Array(String,0);
> push!(names,"word1");
Have a look at the Construtors section of the manual