www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Setting immutable static data inside a struct in a module constructor?

reply aliak <something something.com> writes:
Is it possible to initialize static immutable members of a struct 
like you could do for a global immutable one?

immutable string a;
struct Test {
   static immutable string b;
}

shared static this() {
   a = "foo";
   Test.b = "bar";
}

Error: cannot modify immutable expression b
Mar 03
parent reply Alex <sascha.orlov gmail.com> writes:
On Sunday, 3 March 2019 at 20:10:14 UTC, aliak wrote:
 Is it possible to initialize static immutable members of a 
 struct like you could do for a global immutable one?

 immutable string a;
 struct Test {
   static immutable string b;
 }

 shared static this() {
   a = "foo";
   Test.b = "bar";
 }

 Error: cannot modify immutable expression b
Hmm... should work, I think... But this works in any case: immutable string a; struct Test { static immutable string b; shared static this() { b = "bar"; } } shared static this() { a = "foo"; } void main(){ assert(a == "foo"); assert(Test.b == "bar"); }
Mar 03
parent aliak <something something.com> writes:
On Sunday, 3 March 2019 at 20:41:36 UTC, Alex wrote:
 On Sunday, 3 March 2019 at 20:10:14 UTC, aliak wrote:
 Is it possible to initialize static immutable members of a 
 struct like you could do for a global immutable one?

 immutable string a;
 struct Test {
   static immutable string b;
 }

 shared static this() {
   a = "foo";
   Test.b = "bar";
 }

 Error: cannot modify immutable expression b
Hmm... should work, I think... But this works in any case: immutable string a; struct Test { static immutable string b; shared static this() { b = "bar"; } }
Ah, did not know that. Thank you!
Mar 03