On Tue, 28 Apr 2015 19:30:04 +0000, tcak wrote: > Is there any way to define a variable or an attribute as read-only > without defining a getter function/method for it? > > Thoughts behind this question are: > 1. For every reading, another function call process for CPU while it > could directly read the value from memory. > > 2. Repetition of same name for variable and getVariableName. (Some might > not agree with this but I like the code when it looks nice.)
1. I wouldn't worry too much about the performance--compiling with gdc or ldc with inlining should reduce it to a simple access. 2. You can clean it up if it annoys you with something like this: mixin template readonly(T, string name) { mixin(`private T _`~name~`;T `~name~`()@property{return _`~name~`;}`); } Use it like: class Foo { // injects a private int _x, public int x() mixin readonly!(int, "x"); }