【发布时间】:2018-02-07 06:50:54
【问题描述】:
我在 Swift 中有一个嵌套数组,其中每个内部数组的大小可能不同:
let numbers = [[0], [1], [2, 3], [4]]
问题是我需要根据单个索引值修改一个条目(基本上基于展平数组的索引;所以在这个例子中,每个值本质上都是它的索引)。
我通过flatMap 调用解决了一半的问题,但我不确定之后如何重新嵌套它,或者我是否一开始就采取了错误的方法。
func setValue(_ value: Int, index: Int, list: [[Int]]) -> [[Int]]
{
var output = numbers.flatMap { $0 }
output[index] = value
// TODO: Re-nest
return [output]
}
let output = setValue(42, index: 3, list: numbers)
print(output) // [[0, 1, 2, 42, 4]]
如何输出[[0], [1], [2, 42], [4]],是否有更优雅(实用)的方式来实现?
【问题讨论】:
-
我不是 swift 程序员,但你试过了吗:numbers[2][1] = 7;
-
@TheUnholyProgrammer 嵌套数组的大小可以不同,因此您可以有 [[2, 12, 14], [5], [6]],其中索引 3 指的是 5。跨度>
-
尝试使用数字[2].length;
-
@XmasRights 我认为您的问题是迫切需要一种新的数据类型,以更智能地管理
[[Int]]支持的操作
标签: arrays swift functional-programming