我目前有一个具有数组属性的类型
immutable foo
a::Int64
b::Int64
x::Array{Float64,1} # One dimension array of Float 64, but no length info
end
我知道数组将始终包含 100 个 Float64 元素。有没有办法在类型注释中传递这些信息?也许类似于声明实例化数组大小的方式,如
x = Array(Float64, 100)
?
最佳答案
您可以使用内部构造函数强制执行不变量。
immutable Foo
a::Int64
b::Int64
x::Vector{Float64} # Vector is an alias for one-dimensional array
function Foo(a,b,x)
size(x,1) != 100 ?
error("vector must have exactly 100 values") :
new(a,b,x)
end
end
然后从 REPL:
julia> Foo(1,2,float([1:99]))
ERROR: vector must have exactly 100 values
in Foo at none:7
julia> Foo(1,2,float([1:100]))
Foo(1,2,[1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0 … 91.0,92.0,93.0,94.0,95.0,96.0,97.0,98.0,99.0,100.0])
关于julia - 在类型定义中声明数组属性的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22175581/