arrays - Julia 类型内的数组

标签 arrays types julia

我正在尝试创建一个内部包含数组的类型,但遇到了麻烦。

这是我的代码:

type Gradient
    color::GrandientPoint
    Gradient(color=[]) = new(color)
    function Gradient(rgb::RGB)
        push!(color,GrandientPoint(rgb,0))
    end
end

我收到了这个错误

ERROR: UndefVarError: color not defined

我做错了什么?

最佳答案

function Gradient(rgb::RGB)
    push!(color,GrandientPoint(rgb,0))
end

你从来没有在这里制作过color,所以你不能push!进入color,因为它不存在。事实上,你不需要。要定义一个类型,你只需调用 new 并为其赋值:

function Gradient(rgb::RGB)
    new(GrandientPoint(rgb,0))
end

创建一个 Gradient,其中第一个字段获取值 GrandientPoint(rgb,0),并返回它。


如果你想要一个数组,那么你的类型应该是

type Gradient
    color::Vector{GrandientPoint}
end

不仅仅是一个 GraidentPoint。现在您可以使用它的构造函数来制作该向量。类型从它们的类型名称中得到一个合理的构造函数。所以要制作一个Vector{GrandientPoint},你只需要做

Vector{GraidentPoint}()

你可以把东西塞进去。带有构造函数的完整代码:

type Gradient
    color::Vector{GrandientPoint}
    Gradient(color=[]) = new(Vector{GradientPoint}())
    function Gradient(rgb::RGB)
        color = Vector{GradientPoint}()
        push!(color,GrandientPoint(rgb,0))
        new(color)
    end
end

关于arrays - Julia 类型内的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40187958/

相关文章:

matrix - 在 Julia 中,如何对稀疏矩阵进行列归一化?

matrix - Julia - 如何有效地将矩阵的对角线归零?

javascript - 动态决定for循环的顺序

javascript - JavaScript 数组克隆相等断言中的奇怪行为

将 32 位有符号整数转换为 24 位有符号音频数据

c++ - 是否可以描述一些原始类型的子类型?

julia - 附加!自定义类型混合时失败并显示 "no method matching length"

javascript - 将 2 元组数组转换为一个嵌套的两元素数组

C - 计算数组中相同数字的出现次数

scala - Scala 中的奇怪输入错误