On Tuesday, 16 June 2015 at 21:17:37 UTC, tcak wrote:
As far as I known, when I define a string with enum and it is
used at different parts of code, that string is repeated again
and again in executable file instead of passing a pointer to
string. So, using enum with string doesn't seem like a good
idea.
I'm not sure how true that is. For example, this prints the same
address twice:
----
import std.stdio;
enum e = "foo";
void main()
{
auto a = e;
auto b = e;
writeln(a.ptr);
writeln(b.ptr);
}
----
In contrast, it prints two different addresses when e is defined
as `[1, 2, 3]` instead.
[...]
[code]
struct TableSchema{
const string TABLE = "users";
struct FieldTypes{
const string ID = "BIGINT";
}
const string CREATESQL = "... id " ~ FieldTypes.ID ~ "...";
}
[/code]
But compiler doesn't allow me to access FieldTypes.ID. It says
that it needs `this`. I tried with `static shared`, used
`class` instead of `struct` etc. But couldn't have come up with
a nice solution.
`static immutable` is where it's at.