Next: srfi.120 - Timer APIs, Previous: srfi.114 - Comparators, Up: Library modules - SRFIs [Contents][Index]
srfi.118 - Simple adjustable-size stringsThis SRFI defines two string mutating operations that can change
the length of the string: string-append! and string-replace!.
Note that, in Gauche, the body of strings is immutable; when you mutate
a string, Gauche creates a fresh new string body and just switch a pointer
in the original string to point the new string body. So it is not a
problem to implement this SRFI in Gauche, but it also means you won’t
get any performance benefit by using these operations. Using immutable
counterparts (string-append and string-replace) gives
you the same performance. (Be aware that the interface is slightly
different from the immutable versions.)
We provide this module only for the compatibility. Gauche-specific
programs should stay away from this module. Particularly, avoid
code like the example in SRFI-118 document (build a string by
append!-ing small chunks at a time)—they’re quadratic on Gauche.
[SRFI-118]{srfi.118} The string argument must be a mutable string. Modify string by appending values, each of which is either a character or a string.
(rlet1 a (string-copy "abc") (string-append! a #\X "YZ")) ⇒ "abcXYZ"
[SRFI-118]{srfi.118} The dst argument must be a mutable string. Replace dst between dst-start (inclusive) and dst-end (exclusive) with a string src. The optional arguments src-start and src-end limits the region of src to be used.
Be aware that the order of arguments differ from
SRFI-13’s string-replace (see Other string operations);
string-replace! resembles to string-copy! (also in SRFI-13),
rather than string-replace.
(rlet1 a (string-copy "abc") (string-replace! a 1 2 "XYZ")) ⇒ "aXYZc"
Next: srfi.120 - Timer APIs, Previous: srfi.114 - Comparators, Up: Library modules - SRFIs [Contents][Index]