6

假设我在 Scheme 中创建了一个向量/数组:

(let* ((x #(1 2 3)))
  (list-ref x 0)) ; returns error 

我可以使用什么语法或函数代替该 list-ref 来获取1

编辑:我将 Script-Fu 与 GIMP 2.8 一起使用,array-ref但似乎不起作用。

4

2 回答 2

9

该表达式(define v '#(1 2 3))是创建新向量的简写,在标准 Scheme 中它等价于:

(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查看文档以获取对上述过程的更详细说明。

于 2012-06-22T21:10:19.560 回答
4

您可以vector-ref用于此目的。例如:

(vector-ref x 0)

是 R 5 RS 规范中关于向量的部分的链接,它提供了更多信息。

于 2012-06-22T20:40:13.340 回答