Julia中使用嵌套fill创建二维字符串数组失效该如何解决?
你遇到的问题根源是fill方法在填充非基本类型元素时,只会执行一次传入的对象生成逻辑,外层数组的所有元素都指向同一个内层字符数组实例,因此修改任意子数组的元素会同步影响所有子数组。
可用替代方案
- 如果你需要保持「数组的数组」结构(也就是
mask[y]可以直接拿到一整行的字符数组),用列表推导式生成即可:
mask = [fill(' ', maxx) for _ in 1:maxy]
这种写法每次迭代都会生成一个新的独立内层数组,互相不会影响,后续可以继续用mask[y][x] = '·'的方式赋值。
- 如果你不需要单独提取整行数组,直接用二维字符数组更简洁,性能也更好:
# 初始化maxy行maxx列的空格字符二维数组 mask = fill(' ', maxy, maxx)
赋值时直接用二维索引即可:
mask[y, x] = '·'
内容的提问来源于stack exchange,提问作者fuenfundachtzig
相关产品推荐
相关产品推荐

