Showing posts with label arrays. Show all posts
Showing posts with label arrays. Show all posts
Tuesday, August 1, 2017
String Arrays in Vala
String Arrays in Vala
String Arrays are simply bunches of strings grouped together
string[] apples = {"red delicious", "granny smith", "macintosh", "gala", "fuji"}They look like Python lists, but they are not. They often dont work like lists (you cannot slice them), but they work *really* fast. They are useful if you have a data set that is (mostly) immutable...you can append to it, but I havent found a way to delete strings from the array without copying everything else into a new array.
Here is a demo program showing how to
- Create a string array
- Append a string to an array
- Match a string in an array
- Determine the index of the matched string
- Retrieve a string from the array (non-destructively)
- Replace a string with another withing an array
- Concatenate the array into a single string (for printing)
// string_array.vala
// If a in b
void if_a_in_b ( string a, string[] b, string b_name ) {
if (a in b) {
stdout.printf("Found %s in %s ", a, b_name);
}
else {
stdout.printf("%s not Found in %s ", a, b_name);
}
return;
}
// One way to print an array
void print1 (string[] a, string a_name) {
stdout.printf("Array %s: ", a_name);
foreach (string item in a) {
stdout.printf("%s, ", item);
}
stdout.printf(" ");
return;
}
// Another way to print an array
void print2 (string[] a, string a_name) {
string a_string = string.joinv(", ", a);
stdout.printf("Array %s : %s ", a_name, a_string);
return;
}
// Index of an item in an array
void index_array (string[] a, string a_name, string match) {
// Record the index of all matches
int[] indexes = {};
int i;
for (i = 0; i < a.length; i++) {
if (a[i] == match) {
indexes += i;
}
}
// Print the results
if (indexes.length == 0) {
stdout.printf("Indexing %s: %s not found ", a_name, match);
}
else if (indexes.length == 1) {
stdout.printf("Indexing %s: %s found at position %d ",
a_name, match, indexes[0]);
}
else if (indexes.length == 2) {
stdout.printf("Indexing %s: %s found at positions %d and %d ",
a_name, match, indexes[0], indexes[1]);
}
else {
stdout.printf("Indexing %s: %s found at positions ",
a_name, match);
// Convert ints to a strings
int j;
for (j = 0; j < indexes.length; j++) {
if ( j < (indexes.length - 1)) {
stdout.printf("%d, ", indexes[j]);
}
else {
stdout.printf("and %d. ", indexes[j]);
}
}
}
return;
}
void arrays () {
// Create two string arrays
string[] orange = { "fred", "joe", "allen", "steve" };
string[] blue = { "jane", "sam", "ellie", "terri" };
// Test contents of each array
if_a_in_b ("fred", orange, "Orange");
if_a_in_b ("fred", blue, "Blue");
// Length of an array
stdout.printf("List length: %i ", orange.length);
// Item from an array
stdout.printf("Orange item #2: %s ", orange[1]);
// Replace one string in an array
blue[2] = "pamela";
// Determine the index (location) of a string in an array
index_array(blue, "blue", "pamela");
// Append one string to an array
blue += "stacy";
// Print an array
print1(orange, "orange");
print2(blue, "blue");
return;
}
// Main
public static void main() {
arrays ();
stdout.printf("Hello, World ");
return;
}
Compile with a simple
valac string_array.vala download file now
Subscribe to:
Posts (Atom)