Arrays 朱莉娅:类型定义包含可变长度数组
我想在Julia中定义一个复合类型,它包含另一个复合类型的可变长度数组。最好用一个例子来解释。假设我有这个类型Arrays 朱莉娅:类型定义包含可变长度数组,arrays,types,julia,Arrays,Types,Julia,我想在Julia中定义一个复合类型,它包含另一个复合类型的可变长度数组。最好用一个例子来解释。假设我有这个类型 type p c::Int p() = new(0) end 我真的不在乎。问题是当我试图定义类型时 type pp len::Int arr::Array{p}(1, len) end 很明显,我遇到了一个错误,比如“lennotdefined”,我不知道如何修复它。此外,我应该如何定义pp类型的构造函数?我是朱莉娅的新手,我甚至不确定我所问的是否
type p
c::Int
p() = new(0)
end
我真的不在乎。问题是当我试图定义类型时
type pp
len::Int
arr::Array{p}(1, len)
end
很明显,我遇到了一个错误,比如“lennotdefined”,我不知道如何修复它。此外,我应该如何定义
pp
类型的构造函数?我是朱莉娅的新手,我甚至不确定我所问的是否真的可能。在:
右侧的东西需要是类型。表达式数组{p}(1,len)
不是一个类型;它实际上创建了一个数组:
它是未初始化的,但您可以看到它本身是一个数组(而不是数组的类型)。它的类型只是数组{p,2}
。因此,对于您的示例,最简单的修复方法是:
type pp
len::Int
arr::Array{p,2}
end
但这不是你真正想要的。您可能只需要p
的向量(而不是数组{p}(1,len)
将创建的行矩阵)。还请注意,Julia的阵列功能非常全面。你不需要自己记录长度;阵列已经做到了这一点
所以我可能会写一个PP
类型如下:
immutable PP
arr::Vector{p} # Vector{p} is an alias for Array{p, 1}
end
PP(len::Int) = PP(Vector{p}(len))
您还可以使用以确保arr
的长度len
。
immutable PP
arr::Vector{p} # Vector{p} is an alias for Array{p, 1}
end
PP(len::Int) = PP(Vector{p}(len))