我正在尝试将用户输入矩阵加载到clisp中的数组:
HRESULT hresult = S_OK;
IColorSourceReader* pColorSource;
[-----code to process this information------]
IColorFrameReader* pFrameReader;
hresult = pColorSource->OpenReader(&pFrameReader);
输入示例:
(defvar *rows* (read))
(defvar *columns* (read))
(defvar *matrix* (read-line))
(setq m1 (make-array (list *rows* *columns*) :initial-contents *matrix*))
我收到错误:
2
3
((1 2 3) (4 5 6))
但是,如果我在代码中手动输入:
*** - MAKE-ARRAY: "((1 2 3) (4 5 6))" is of incorrect length
它运作正常,我错过了什么?
答案 0 :(得分:9)
你想:
(setq m1 (make-array '(2 3) :initial-contents '((1 2 3) (4 5 6))))
但是你的代码做了这样的事情:
(setq m1 (make-array '(2 3) :initial-contents '"((1 2 3) (4 5 6))"))
而不是初始内容的列表结构,您传入一个字符串。
将字符串转换为列表或使用read
代替read-line
。