Julia 数组的结构:类型错误

Julia 数组的结构:类型错误,julia,Julia,我不理解以下两种结构定义之间的区别。第一个可以正常工作,而第二个给出了类型错误: julia> struct point1 xy::Vector{Float64} end julia> struct point2 xy::Array{Float64,1}(2) end ERROR: TypeError: point2: in type definition, expected Type, got Array{F

我不理解以下两种结构定义之间的区别。第一个可以正常工作,而第二个给出了类型错误:

julia> struct point1
           xy::Vector{Float64}
       end

julia> struct point2
           xy::Array{Float64,1}(2)
       end
ERROR: TypeError: point2: in type definition, expected Type, got Array{Float64,1}
Stacktrace:
 [1] eval(::Module, ::Any) at ./boot.jl:235
 [2] eval(::Any) at ./boot.jl:234
 [3] macro expansion at /Users/.julia/v0.6/Atom/src/repl.jl:186 [inlined]
 [4] anonymous at ./<missing>:?
julia>struct point1
xy::向量{Float64}
终止
julia>结构点2
xy::数组{Float64,1}(2)
终止
错误:TypeError:point2:在类型定义中,应为类型,获取数组{Float64,1}
堆栈跟踪:
[1] eval(::模块,::任意)在./boot.jl:235
[2] eval(::Any)at./boot.jl:234
[3] 宏扩展位于/Users/.julia/v0.6/Atom/src/repl.jl:186[内联]
[4] 匿名地址:/?
有什么想法吗?

解决了它:

struct point2
    xy::Array{Float64,1}
end
问题是维度的定义…

解决了它:

struct point2
    xy::Array{Float64,1}
end

问题是维度的定义…

这里的问题是
数组{Float64,1}(2)
不是类型(即
typeof(Array{Float64,1}(2))!=DataType
),而是
数组{Float64,1}
的新初始化实例

如果要修正数组字段的尺寸
xy
,可以

1) 如果有人试图使用错误大小的数组初始化,则让构造函数抛出错误/警告(当然,这不会影响性能)

2) 用来加速你的代码

Pkg.add("StaticArrays")
using StaticArrays

struct point3
    xy::SVector{2,Float64}
end
测试:


这里的问题是
Array{Float64,1}(2)
不是类型(即
typeof(Array{Float64,1}(2))!=DataType
),而是
Array{Float64,1}
的新初始化实例

如果要修正数组字段的尺寸
xy
,可以

1) 如果有人试图使用错误大小的数组初始化,则让构造函数抛出错误/警告(当然,这不会影响性能)

2) 用来加速你的代码

Pkg.add("StaticArrays")
using StaticArrays

struct point3
    xy::SVector{2,Float64}
end
测试: