What exactly do you want to achieve by making it const?
m. 2012/10/26 Calvin Walton <[email protected]>: > On Thu, 2012-10-25 at 13:00 -0700, bsquared wrote: >> I attempted a simple test using this: >> 8< ------------------------------------------------ >> private static const Set<string> STATIC_SET; >> static construct { >> STATIC_SET = new HashSet<string> (); >> STATIC_SET.add ("Hello"); >> STATIC_SET.add ("World"); >> } >> ------------------------------------------------ >8 >> >> with this result: >> 8< ------------------------------------------------ >> valac --pkg gee-1.0 hello_set.vala >> hello_set.vala:5.4-5.47: error: `Gee.Set<string>' not supported as type >> for constants >> private static const Set<string> STATIC_SET; >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> hello_set.vala:8.3-8.16: error: The name `add' does not exist in the >> context of `HelloTest.STATIC_SET' >> STATIC_SET.add("Hello"); >> ^^^^^^^^^^^^^^ >> hello_set.vala:9.3-9.16: error: The name `add' does not exist in the >> context of `HelloTest.STATIC_SET' >> STATIC_SET.add("World"); >> ^^^^^^^^^^^^^^ >> Compilation failed: 3 error(s), 0 warning(s) >> ------------------------------------------------ >8 >> >> >> To my untrained eye this appears to indicate that I cannot use these as >> constants. If I drop 'const' from the declaration it compiles and runs >> correctly. > > This is the expected result - if the Set is constant, then you can't > call the add method on it. It looks like the Gee Set type simply doesn't > support being used as a constant. > > I think that the only types that you can actually use as constants in > Vala are ones that compile to basic/simple C types, and therefore could > be created using constant C initializers. If you have to write data to > the object at run-time to fill it, it's not a compile-time constant, > after all. > > This limits you to using things like arrays of structures, for example. > > If you really want a run-time initialized Set, then it will have to be > non-const. > > -- > Calvin Walton <[email protected]> > > _______________________________________________ > vala-list mailing list > [email protected] > https://mail.gnome.org/mailman/listinfo/vala-list > _______________________________________________ vala-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/vala-list
