Arrays 在Scheme中获取向量中的第一个元素
假设我在Scheme中创建了一个向量/数组:Arrays 在Scheme中获取向量中的第一个元素,arrays,vector,scheme,Arrays,Vector,Scheme,假设我在Scheme中创建了一个向量/数组: (let* ((x #(1 2 3))) (list-ref x 0)) ; returns error 我可以使用什么语法或函数来代替列表引用来获取1 编辑:我在GIMP 2.8中使用脚本Fu,其中array ref似乎不起作用 为此,您可以使用向量ref。例如: (vector-ref x 0) 是指向R5RS规范向量部分的链接,该部分提供了更多信息。表达式(定义v'#(1 2 3))是创建新向量的缩写,在标准方案中,它等效于: (de
(let* ((x #(1 2 3)))
(list-ref x 0)) ; returns error
我可以使用什么语法或函数来代替列表引用来获取1
编辑:我在GIMP 2.8中使用脚本Fu,其中
array ref
似乎不起作用 为此,您可以使用向量ref
。例如:
(vector-ref x 0)
是指向R5RS规范向量部分的链接,该部分提供了更多信息。表达式(定义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
是我们要检索其元素的索引。有关上述步骤的更详细说明,请参阅。尝试vector ref
。。。(例如)哦,哇。这是我应该能弄明白的。这会很挑剔,但当你提到“标准方案”时,这种挑剔是有道理的。。。至少在R5R及以上版本中,未指定#(…)
。相反,你应该引用它:”#(…)
。(这与()
不是'()
的有效速记类似),而且由于它被引用,所以这种文字和构造新向量的表达式之间通常存在区别。