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.

Reply via email to