[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.7.3.3 Accessing and Modifying Vector Contents
vector-length
and vector-ref
return information about a
given vector, respectively its size and the elements that are contained
in the vector.
- Scheme Procedure: vector-length vector
- C Function: scm_vector_length (vector)
Return the number of elements in vector as an exact integer.
- Scheme Procedure: vector-ref vec k
- C Function: scm_vector_ref (vec, k)
Return the contents of position k of vec. k must be a valid index of vec.
(vector-ref '#(1 1 2 3 5 8 13 21) 5) ⇒ 8 (vector-ref '#(1 1 2 3 5 8 13 21) (let ((i (round (* 2 (acos -1))))) (if (inexact? i) (inexact->exact i) i))) ⇒ 13
- C Function: SCM scm_c_vector_ref (SCM vec, size_t k)
Return the contents of position k (a
size_t
) of vec.
A vector created by one of the dynamic vector constructor procedures (see section Dynamic Vector Creation and Validation) can be modified using the following procedures.
NOTE: According to R5RS, it is an error to use any of these procedures on a literally read vector, because such vectors should be considered as constants. Currently, however, Guile does not detect this error.
- Scheme Procedure: vector-set! vec k obj
- C Function: scm_vector_set_x (vec, k, obj)
Store obj in position k of vec. k must be a valid index of vec. The value returned by ‘vector-set!’ is unspecified.
(let ((vec (vector 0 '(2 2 2 2) "Anna"))) (vector-set! vec 1 '("Sue" "Sue")) vec) ⇒ #(0 ("Sue" "Sue") "Anna")
- C Function: void scm_c_vector_set_x (SCM vec, size_t k, SCM obj)
Store obj in position k (a
size_t
) of vec.
- Scheme Procedure: vector-fill! vec fill
- C Function: scm_vector_fill_x (vec, fill)
Store fill in every position of vec. The value returned by
vector-fill!
is unspecified.
- Scheme Procedure: vector-move-left! vec1 start1 end1 vec2 start2
- C Function: scm_vector_move_left_x (vec1, start1, end1, vec2, start2)
Copy elements from vec1, positions start1 to end1, to vec2 starting at position start2. start1 and start2 are inclusive indices; end1 is exclusive.
vector-move-left!
copies elements in leftmost order. Therefore, in the case where vec1 and vec2 refer to the same vector,vector-move-left!
is usually appropriate when start1 is greater than start2.
- Scheme Procedure: vector-move-right! vec1 start1 end1 vec2 start2
- C Function: scm_vector_move_right_x (vec1, start1, end1, vec2, start2)
Copy elements from vec1, positions start1 to end1, to vec2 starting at position start2. start1 and start2 are inclusive indices; end1 is exclusive.
vector-move-right!
copies elements in rightmost order. Therefore, in the case where vec1 and vec2 refer to the same vector,vector-move-right!
is usually appropriate when start1 is less than start2.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on April 20, 2013 using texi2html 5.0.