Neat trick - 'with' and unnamed objects + 'with' proposals
Bill Baxter
dnewsgroup at billbaxter.com
Tue Apr 24 10:38:26 PDT 2007
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
More information about the Digitalmars-d
mailing list