Strings
Ki has two string types: string and dynstring, corresponding to array and
dynarray; indeed, string and dynstring are essentially array and
dynarray, thus iterating over them yields a sequence of rune values.
Of course, they also have some extra features that array and dynarray
don't. String literals in Ki, like "русский автор", are encoded in UTF-8.
fn xform(string s): <string> {
return "Behold, I am transformed!"
}
fn main() {
val a: "This is a string"
val b: "This is a "
"multiline string"
val c: "This is how you interpolate values: ${a}"
val d: `This string will not decode special characters or `
`interpolate other values, like ${a}\n`
val e: "This is how you transform an interpolated value: ${xform(a)}"
}
fn main() {
val s: "apple"
val vowels: "aeiouy"
echo("Vowels in ${s}:")
for (r in s) {
if (r in vowels) {
echo("\t${c}")
}
}
}
fn main() {
var s: "apple"
with (s[4]) {
s[4] = 'y'
}
}
Strings are indexable, but as they are displayed as encoded in UTF-8, this may yield surprising results. Use with care.