Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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,我目前正在Julia中编程,我想要一个方法(ProbData类的构造函数)将定义类型的数组作为其参数。我目前正在做的是: function ProbData(variables::AbstractArray{BaseVariable, 1}) instance = new() instance.numPara = size(variables, 1) instance.numRand = 0 for x = variables if x.var

我目前正在Julia中编程,我想要一个方法(ProbData类的构造函数)将定义类型的数组作为其参数。我目前正在做的是:

function ProbData(variables::AbstractArray{BaseVariable, 1})
    instance = new()

    instance.numPara = size(variables, 1)
    instance.numRand = 0

    for x = variables
        if x.variableType != "Det"
            instance.numRand += 1
        end
    end

    instance.getNumPara = function()
        return instance.numPara
    end

    instance.getNumRand = function()
        return instance.numRand
    end

    return instance
end
BaseVariable是具有三个子类型的抽象。当我尝试:

x = DetVariable("test", 0.15)
P = ProbData([x])
我收到以下错误消息:

ERROR: LoadError: MethodError: 'convert' has no method matching convert(::Type{ProbData}, ::Array{DetVariable.jl,1})
我怎样才能解决这个问题?我刚学了几天这门语言,所以如果你能指出我不该做什么,我也会很感激


编辑:我发现,如果我将构造函数的参数数组定义为某种类型的数组而不是抽象数组,那么代码将正常工作。但是,我需要参数为数组,其元素可以是BaseVariable的任何子类型。

只需将函数声明更改为:

function ProbData{T<:BaseVariable}(variables::AbstractArray{T, 1})
函数ProbData{T