Confusing stuff with arrays
Jari-Matti Mäkelä
jmjmak at utu.fi.invalid
Fri May 12 07:22:45 PDT 2006
Tom S wrote:
> Deewiant wrote:
>> Of course I managed to forget the most important question for me: is
>> there a
>> reasonable way of doing what I'm trying to do?
>>
>> I.e. is there a template or whatever which would allow me to properly
>> initialise
>> an array of type char[][2][] with, say, [["Foo", "bar"], ["Bar",
>> "foo"]] inline?
Yes, here's the Tom's array logic with some simple template magic (might
not be fully optimized, though):
import std.stdio;
template dynamicA(T){
T[] dynamicA(T[] newArray...){
return newArray.dup;
}
}
template staticA(T, int l) {
T[l][] staticA(T[][] items...) {
T[l][] tmp = new T[l][items.length];
foreach(int i, T[] x; items) {
assert (l == x.length);
foreach(int j, T y; x) {
tmp[j][i] = y.dup;
}
}
return tmp;
}
}
void main() {
auto t = staticA!(char[], 2)(dynamicA!(char[])("Foo", "bar"),
dynamicA!(char[])("Bar", "foo"));
foreach (a; t) {
writef("[ ");
foreach (x; a) {
writef(x, ' ');
}
writefln(']');
}
}
--
Jari-Matti
More information about the Digitalmars-d-learn
mailing list