roberto.voxelfarm Posted June 3, 2019 Posted June 3, 2019 Hello I'm trying to call a function and return a list of element, but the list always return with the element were each element is null. Here is a sample with a list of string, I try many variant but don't work any. void btTest() { string test[]; teststr(test); log.message("\n"); foreach(string st; test) { log.message(format("-> %s", st)); } } void teststr(string &strs[]) { for (int i=0;i<20;i++) { string s = format(" %d,", i); strs.append(s); log.message(s); } } 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> -> Any idea how I can return a array of elements from a function using Uniginescript
roberto.voxelfarm Posted June 3, 2019 Author Posted June 3, 2019 I change strs.append(s) -- > strs = s; and this work. look like the append not is working correctly or I miss something. The code now with the console will be: void btTest() { string test[]; teststr(test); log.message("\n"); foreach(string st; test) { log.message(format("-> %s", st)); } } void teststr(string &strs[]) { for (int i=0;i<20;i++) { string s = format(" %d,", i); strs[i] = s; log.message(s); } } 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, -> 0,-> 1,-> 2,-> 3,-> 4,-> 5,-> 6,-> 7,-> 8,-> 9,-> 10,-> 11,-> 12,-> 13,-> 14,-> 15,-> 16,-> 17,-> 18,-> 19,
fox Posted June 4, 2019 Posted June 4, 2019 Hi Roberto, The point is that when declaring an empty vector, you are required to specify its size (see the article about Containers): int vector[0]; So, this code should work properly: void btTest() { string test[0]; // <-- specify zero-size for an empty vector teststr(test); log.message("\n"); foreach(string st; test) { log.message(format("-> %s", st)); } } void teststr(string &strs[]) { for (int i=0;i<20;i++) { string s = format(" %d,", i); //strs[i] = s; strs.append(s); log.message(s); } } Thanks! 1
Recommended Posts