Julia 具有泛型函数成员的结构数组?

Julia 具有泛型函数成员的结构数组?,julia,flux,Julia,Flux,我正在尝试构造一个结构数组,其中每个实例包含不同的函数。我想将它们添加到循环中的数组中 下面是一个例子: struct mystruc{F} σ::F end a = [mystruc(relu)] for i in 1:3 append!(a, [mystruc(identity), ]) end 作为补充说明,我可以选择预先分配数组,但我不知道如何处理这种类型的结构。每个函数都有一个类型,该类型是该函数独有的: julia> typeof(x -> x) == ty

我正在尝试构造一个结构数组,其中每个实例包含不同的函数。我想将它们添加到循环中的数组中

下面是一个例子:

struct mystruc{F}
    σ::F
end

a = [mystruc(relu)]
for i in 1:3
 append!(a, [mystruc(identity), ])
end

作为补充说明,我可以选择预先分配数组,但我不知道如何处理这种类型的结构。

每个函数都有一个类型,该类型是该函数独有的:

julia> typeof(x -> x) == typeof(x -> x)
false
julia> a = mystruc{<:Function}[mystruc(relu)]
这里我们创建了两次函数
x->x
,它们是两个不同的函数,所以它们的类型不一样

在构建
a
时,您将创建该特定类型的数组:

julia> a = [mystruc(relu)]
1-element Array{mystruc{typeof(relu)},1}:
 mystruc{typeof(relu)}(relu)

julia> typeof(a)
Array{mystruc{typeof(relu)},1}
所以当你推另一个函数时,我们会得到一个错误,因为这个数组只能包含
mystruc{typeof(relu)}
类型的对象

解决方案 构造
a
时,告诉Julia数组将包含带有任何函数的
mystruc

julia> typeof(x -> x) == typeof(x -> x)
false
julia> a = mystruc{<:Function}[mystruc(relu)]
julia>a=mystruc{push!(a,mystruc(x->2x))
二元数组{mystruc{#s1}其中#s1