比方说,我创建方案矢量/阵列:获取矢量第一个元素方案
(let* ((x #(1 2 3)))
(list-ref x 0)) ; returns error
我可以在列表-ref的地方使用什么语法或函数来获取1
?
编辑:我用GIMP 2.8使用Script-Fu,其中array-ref
似乎不工作。
比方说,我创建方案矢量/阵列:获取矢量第一个元素方案
(let* ((x #(1 2 3)))
(list-ref x 0)) ; returns error
我可以在列表-ref的地方使用什么语法或函数来获取1
?
编辑:我用GIMP 2.8使用Script-Fu,其中array-ref
似乎不工作。
表达(define v #(1 2 3))
是创建一个新的矢量的简写,在标准方案是相同的:
(define v (list->vector '(1 2 3)))
或者这样:
(define v (make-vector 3))
(vector-set! v 0 1)
(vector-set! v 1 2)
(vector-set! v 2 3)
一旦载体创建(使用任何的程序),访问矢量元素的正确方法是调用vector-ref
程序 - 很明显,因为它是一个矢量而不是列表元素的:
(vector-ref v 0)
在前面的表达式,v
是向量和0
我们要检索其元素的索引。查看documentation,以获得对上述过程更详细的解释。
这将是挑剔的,但是当你提到“标准方案”时,这样的挑剔是有道理的......至少在r5rs以上,没有指定'#(...)'。相反,你应该引用它:'#(...)'。 ('()'不是''()'的有效缩写,它是类似的。)因为它被引用,所以这种文字和构造新向量的表达式之间有着通常的区别。 –
试试'vector-ref' ...(例如http://people.csail.mit.edu/jaffer/r5rs_8.html) – Dirk