Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Julia 声明类型定义中数组属性的大小_Julia - Fatal编程技术网

Julia 声明类型定义中数组属性的大小

Julia 声明类型定义中数组属性的大小,julia,Julia,我当前有一个具有数组属性的类型 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(float64100)?您可以使用内部构造函数强制执行不变量 immutable F

我当前有一个具有数组属性的类型

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(float64100)

您可以使用内部构造函数强制执行不变量

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中尚未实现固定大小的数组,请参阅GitHub上的。我曾考虑建议您使用
NTuple{100,Float64}
,但它是一种不可变类型(例如setindex!方法未定义等)。请注意,它包含一个有效的实现。我认为目前只允许表达式作为内部构造函数