digitalmars.D - With as an expression instead of a statement
- Guillaume B. (28/28) Sep 01 2007 Hi,
- BCS (2/48) Sep 01 2007 vote += 0.25;
Hi, I've been playing with D for some time now and I thought of something. It might have been proposed before but I didn't find anything about it. My idea is to enhance the "with" statement so that it becomes more useful: "with" could be an expression instead of a statement. The value of the expression would be the value of the object passed to the with statement. This could be very useful to initialize complex objects, like in GUI libraries. Here is an example of what you can do now with "with": class AClass { ... } void foo(AClass c) { ... } AClass c; with (c = new AClass()) { method1 = 10; method2 = 100; // ... } foo(c); If "with" was an expression, you could write: auto c = with (new AClass()) { method1 = 10; method2 = 100; // ... } foo(c); Or, if you don't need "c": foo(with (new AClass()) { method1 = 10; method2 = 100; // ... }); What do you think? Guillaume B.
Sep 01 2007
Reply to Guillaume B.,Hi, I've been playing with D for some time now and I thought of something. It might have been proposed before but I didn't find anything about it. My idea is to enhance the "with" statement so that it becomes more useful: "with" could be an expression instead of a statement. The value of the expression would be the value of the object passed to the with statement. This could be very useful to initialize complex objects, like in GUI libraries. Here is an example of what you can do now with "with": class AClass { ... } void foo(AClass c) { ... } AClass c; with (c = new AClass()) { method1 = 10; method2 = 100; // ... } foo(c); If "with" was an expression, you could write: auto c = with (new AClass()) { method1 = 10; method2 = 100; // ... } foo(c); Or, if you don't need "c": foo(with (new AClass()) { method1 = 10; method2 = 100; // ... }); What do you think? Guillaume B.vote += 0.25;
Sep 01 2007