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
测试: