Neat trick - 'with' and unnamed objects + 'with' proposals
Max Samukha
samukha at voliacable.com
Tue Apr 24 11:56:33 PDT 2007
On Wed, 25 Apr 2007 02:38:26 +0900, Bill Baxter
<dnewsgroup at billbaxter.com> wrote:
>Max Samukha wrote:
>> On Tue, 24 Apr 2007 20:18:24 +0300, Max Samukha
>> <samukha at voliacable.com> wrote:
>>
>>> On Wed, 25 Apr 2007 01:53:56 +0900, Bill Baxter
>>> <dnewsgroup at billbaxter.com> wrote:
>>>
>>>> BCS wrote:
>>>>> Bill Baxter wrote:
>>>>>> BCS wrote:
>>>>>>
>>>>>>> Bill Baxter wrote:
>>>>>>
>>>>>>> how about take a trick from "if"
>>>>>>>
>>>>>>> with(auto name = new someGUIWidget(myParent))
>>>>>>> {
>>>>>>> shown = true;
>>>>>>> focusable = false;
>>>>>>> some_global_function(name);
>>>>>>> }
>>>>>>
>>>>>> Yeh, I was actually just thinking that myself, and was disappointed to
>>>>>> find out it doesn't work. :-(
>>>>>>
>>>>>> Looking at the spec it seems that's special to 'if'. It could be
>>>>>> useful for switch(), with() and synchronized(), but it seems it hasn't
>>>>>> been added.
>>>>>>
>>>>>> --bb
>>>>> Ohhh. That would be nice in switch ... and while...
>>>> I was thinking 'while' would have issues, because the condition is
>>>> evaluated multiple times. So I left it off the list. Maybe it's not a
>>>> problem though. Just make it equiv to
>>>> {
>>>> typeof(condition()) x;
>>>> while(x = condition()) {
>>>> // do stuff
>>>> }
>>>> }
>>>>
>>>> --bb
>>> This would be inconsistent with if(), which declares the variable to
>>> be local to if's scope. BTW, it'd be nice to have the variable
>>> declared outside the if block as you proposed for 'with'. I remember a
>>> case or two when I wanted that.
>>>
>>>
>>>
>>
>> BTW, there is a bug
>>
>> void main(char[][] f)
>> {
>> int x = 1;
>>
>> if (auto x = 2)
>> {
>> writefln(x);
>> }
>>
>> writefln(x);
>> }
>>
>> x in if() shadows the outer x and it shouldn't according to the specs
>
>You mean it should be an error according to the specs, right?
>--bb
Yes
More information about the Digitalmars-d
mailing list