Common Lisp:如何访问某个多维数组的行?

h__*_*h__ 6 common-lisp

比方说我写了

(setf s (make-array (list 9 9) :element-type 'bit))
Run Code Online (Sandbox Code Playgroud)

所以s是一个9x9的位矩阵.

我想得到第一排的.我怎么做到的?

我本可以做到以下几点:

(setf s (make-array 9 
          :element-type 'array 
          :initial-element 
          (make-array 9 :element-type 'bit)))
Run Code Online (Sandbox Code Playgroud)

并通过(svref s 0)访问第一行.
但我想知道是否有内置方式.
(并且2 dim数组似乎分配更少的字节).

krz*_*z00 5

(defun array-slice (arr row)
    (make-array (array-dimension arr 1) 
      :displaced-to arr 
       :displaced-index-offset (* row (array-dimension arr 1))))
Run Code Online (Sandbox Code Playgroud)

这仅适用于行切片,而不是IIRC复制数组.写入切片将修改原始数组.