digitalmars.D.learn - Creating variable name with variables
Hello, I was wondering if it is possible to create a variable name with other variables. For example: char[] left = "num1"; char[] right = "num2"; char[] num1num2 = "doesn't matter what this equals"; How would I create the variable with the values of the first two variables? Thanks!
Apr 23 2007
okibi wrote:Hello, I was wondering if it is possible to create a variable name with other variables. For example: char[] left = "num1"; char[] right = "num2"; char[] num1num2 = "doesn't matter what this equals"; How would I create the variable with the values of the first two variables? Thanks!you can't unless left and right are const. If they are you have several options: mixin("char[] "~left~right~";") then use mixin(left~right) for the variable another option is a total hack template Value(T, char[] str) { T Value; } Value!(char[], left~right) = "hello"; writef("%s\n", Value!(char[], left~right)); I haven't actually tried that usage, but you can make it work for some cases. The advantage of it is that you can do it with D v1.0
Apr 23 2007
BCS Wrote:okibi wrote:They won't be const so that first method is out. I'll give the second method a go and see if it works. Thanks!Hello, I was wondering if it is possible to create a variable name with other variables. For example: char[] left = "num1"; char[] right = "num2"; char[] num1num2 = "doesn't matter what this equals"; How would I create the variable with the values of the first two variables? Thanks!you can't unless left and right are const. If they are you have several options: mixin("char[] "~left~right~";") then use mixin(left~right) for the variable another option is a total hack template Value(T, char[] str) { T Value; } Value!(char[], left~right) = "hello"; writef("%s\n", Value!(char[], left~right)); I haven't actually tried that usage, but you can make it work for some cases. The advantage of it is that you can do it with D v1.0
Apr 23 2007
okibi wrote:BCS Wrote:char[][char[]] vars; vars[left~right] = something; but that give you a hash lookup for every access (modulo optimizations).okibi wrote:They won't be const so that first method is out. I'll give the second method a go and see if it works. Thanks!Hello, I was wondering if it is possible to create a variable name with other variables. For example: char[] left = "num1"; char[] right = "num2"; char[] num1num2 = "doesn't matter what this equals"; How would I create the variable with the values of the first two variables? Thanks!you can't unless left and right are const. If they are you have several options: mixin("char[] "~left~right~";") then use mixin(left~right) for the variable another option is a total hack template Value(T, char[] str) { T Value; } Value!(char[], left~right) = "hello"; writef("%s\n", Value!(char[], left~right)); I haven't actually tried that usage, but you can make it work for some cases. The advantage of it is that you can do it with D v1.0
Apr 23 2007