You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia中如何声明行长度可变的二维数组?现有实现报错如何解决?

现有代码的问题
  • 语法错误:Julia 中访问数组元素需使用方括号[],原代码中o.rows(i)的写法是将数组对象作为函数调用,直接触发 MethodError。
  • 类型定义错误:普通 struct 在 Julia 中默认是不可变类型,实例创建后无法修改字段值,因此你无法直接给In实例的cols字段赋值。
修复后的自定义实现

修改后的可运行代码如下:

# 声明为可变结构体才能修改字段
mutable struct In
  cols :: Vector{Int};
end 

struct Out
  nlen :: Int;
  rows :: Vector{In};
  function Out(n)  
    o = new(n, Vector{In}(undef,n));
    
    for i in 1:n
      # 数组索引用方括号,先初始化In实例再赋值
      o.rows[i] = In(Vector{Int}(undef,i))
    end
    return o
  end
end

myarray = Out(5);
更简洁的原生锯齿数组实现

你原本的需求用 Julia 原生的Vector{Vector{Int}}就能直接实现,不需要额外定义结构体:

# 如果你需要的是每行长度为1~n的锯齿数组
n = 5
myarray = [Vector{Int}(undef, i) for i in 1:n]

# 如果你需要匹配你给出的星号示例的行长度(分别为3、12、6、1、1、2)
row_lengths = [3, 12, 6, 1, 1, 2]
myarray = [Vector{Int}(undef, len) for len in row_lengths]

后续你可以直接通过myarray[行号][列号]的方式读写数组元素。

内容的提问来源于stack exchange,提问作者roy.atlas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:48:03