Bill Baxter wrote: > """ > I've always thought properties should work somewhat like this: > > property int length { > get() { return this.len; } > set(newLen) { this.len = newLen; } > } > """ > > I'm curious. Is it just a coincidence that how you've "always > thought" happens to look a lot like C# properties? Or did you mean > to say "Ever since I saw how C# does properties I've thought...."?
Nope. Never used C#, never seen it. I just think about language design a lot, and this is what I came up with. From that newsgroup thread, it seems that they are still quite different from C# properties. > In any event I think a problem with this is that for D's simple > grammar to remain simple and context free, get and set would both have > to be made keywords in the language. I don't think so. They can just be identifiers with special meaning. If you look a bit further down the thread, I suggest adding the 'auto' keyword where the missing types are now. Perhaps that helps. In fact, in the design of my own language, those names have special meaning for all types: get(x) (or x.get()) returns x itself. set(x, v) (or x.get(v)) assigns v to x. If you specify them in a property, you're just overriding their meaning for the underlying type of the property, just like you can override other member-functions. Another upside is that you can always count on these functions existing for every type and you can pass them around as functions/delegates. -- Michiel Helvensteijn