我需要一个UnitRanges的向量,如下所示: [2:5,3:6,4:7,5:8]
当我尝试运行此(2:5):( 5:8)时,出现错误“ ArgumentError:step不能为零。”
是否可以使用UnitRange本身创建UnitRange数组?
答案 0 :(得分:2)
听起来您想对两个参数中的元素进行映射或广播 devtool
。只需明确地做:
:
现在,理想情况下,您也可以将其写为julia> map(:, 2:5, 5:8)
4-element Array{UnitRange{Int64},1}:
2:5
3:6
4:7
5:8
—您可以点(2:5) .: (5:8)
运算符来广播它—但是由于:
用于很多事情并且由于这不是一个很常见的用例,因此我们尚未启用:
的点对点。但是,您可以使用非前缀形式并在其上加上点号:
:
对于您得到的错误消息,这是因为julia> (:).(2:5, 5:8)
4-element Array{UnitRange{Int64},1}:
2:5
3:6
4:7
5:8
要做的第一件事是确定长度,假设其两个参数是标量。为此,它从第二个参数中减去第一个参数:
:
之所以失败,是因为它试图创建有效julia> (5:8) - (2:5)
ERROR: ArgumentError: step cannot be zero
且长度为4的步距。