Julia:Make方法将数组作为参数

时间:2016-04-26 09:56:44

标签: julia

我目前正在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的任何子类型。

1 个答案:

答案 0 :(得分:3)

只需将函数声明更改为:

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