'switch' operator improvement

Eugen.Konkov at aldec.com Eugen.Konkov at aldec.com
Wed Oct 17 05:21:40 PDT 2007


I think this is the best:
1) Variable in 'switch' is parameter for case
2) 'case' triggers if result of case expression is 'true'
So.
switch( aaa )
  case <some expression>:
  case <another expression>:
  ...

After JS processing
if( <modified some expression> ) {
if( <another modified expression> ) {


----- Original Message ----- 
From: "Dave Herman" <dherman at ccs.neu.edu>
To: <Eugen.Konkov at aldec.com>
Cc: "Lars T Hansen" <lth at acm.org>; <Es4-discuss at mozilla.org>
Sent: Tuesday, October 16, 2007 6:19 PM
Subject: Re: 'switch' operator improvement


> But that's not what you proposed, is it? I understood your proposal to 
> mean something more like:
>
> function f(g) {
>     if (let (tmp = g())    // case g():
>         (tmp is RegEx ? tmp.match(x) : x == tmp)) ....
>     if ....
> }
>
> Dave
>
> Eugen.Konkov at aldec.com wrote:
>> I think switch ... case construction must be interpreted as:
>> function f(g) {
>>  if( x == g() ) ....     // case g():
>>  if( ....                    //  case ...
>>  }
>>
>> ----- Original Message ----- 
>> From: "Dave Herman" <dherman at ccs.neu.edu>
>> To: "Lars T Hansen" <lth at acm.org>
>> Cc: <Eugen.Konkov at aldec.com>; <Es4-discuss at mozilla.org>
>> Sent: Tuesday, October 16, 2007 6:04 PM
>> Subject: Re: 'switch' operator improvement
>>
>>
>>> It's clever, but it's a special case that may not abstract very 
>>> smoothly. For example:
>>>
>>> function f(g) {
>>>     switch (x) {
>>>         case g():
>>>         ...
>>>     }
>>> }
>>>
>>> The behavior of my function depends on whether g() returns a RegEx or a 
>>> non-RegEx. Maybe that's what you want, but it means it's an extra 
>>> special case that you have to be aware of whenever abstracting a case 
>>> statement.
>>>
>>> Dave
>>>
>>> Lars T Hansen wrote:
>>>> Neat, though it breaks backward compatibility -- each regexp is
>>>> converted to string before the comparison, IIRC.  (Compatibility may
>>>> not be a big problem in practice in this case.)
>>>>
>>>> --lars
>>>>
>>>> On 10/16/07, Eugen.Konkov at aldec.com <Eugen.Konkov at aldec.com> wrote:
>>>>> allow RegEx in case
>>>>>
>>>>> var str= 'a';
>>>>> switch( str ) {
>>>>>   case /a/:
>>>>>     alert('a');
>>>>>     break;
>>>>>
>>>>>   case /b/:
>>>>>     alert('b');
>>>>>     break;
>>>>>   }
>>>>>
>>>>> _______________________________________________
>>>>> Es4-discuss mailing list
>>>>> Es4-discuss at mozilla.org
>>>>> https://mail.mozilla.org/listinfo/es4-discuss
>>>>>
>>>>>
>>>> _______________________________________________
>>>> Es4-discuss mailing list
>>>> Es4-discuss at mozilla.org
>>>> https://mail.mozilla.org/listinfo/es4-discuss
>> _______________________________________________
>> Es4-discuss mailing list
>> Es4-discuss at mozilla.org
>> https://mail.mozilla.org/listinfo/es4-discuss
> 




More information about the Es4-discuss mailing list