在Ruby中将嵌套数组转换为矩阵时[],与简单地从头创建矩阵相比,矩阵最终会在值周围增加一个额外值.
> require 'matrix'
> matrix1 = Matrix[[1,2,3],[4,5,6],[7,8,9]]
> p matrix1
Run Code Online (Sandbox Code Playgroud)
=>矩阵[[1,2,3],[4,5,6],[7,8,9]]
> nested_array = [[1,2,3],[4,5,6],[7,8,9]]
> matrix2 = Matrix[nested_array]
> p matrix2
Run Code Online (Sandbox Code Playgroud)
=>矩阵[[[1,2,3],[4,5,6],[7,8,9]]]
从阵列构建时,有没有办法避免额外的方括号?
Dav*_*ger 13
matrix2 = Matrix[*nested_array]
p matrix2
=> Matrix[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Run Code Online (Sandbox Code Playgroud)
星号(*)被称为"splat运算符",它本质上可以用来处理数组(nested_array在这种情况下)就好像它不是一个数组,而是好像它的元素是单独的元素/参数.