Where should I put a `condp` like function?

Idan Arye GenericNPC at gmail.com
Sun Apr 14 17:26:10 PDT 2013


On Sunday, 14 April 2013 at 23:54:57 UTC, bearophile wrote:
> Idan Arye:
>
>> (because it's a useful function)
>
> I think you should explain why you think it's useful.
>
> Bye,
> bearophile

Well, `predSwitch` has two main advantages on regular `switch`. 
The first is being able to choose your own predicate. `switch` is 
preferable to a chain of `if`-`else if` because it's a clearer 
syntax(and because of the usage of lookup tables, but 
`predSwitch` does not have that), but not all `if`-`else if` 
chains are about simple equality checking - sometimes you need to 
check for other things, like which collection contains a value. 
Choosing your own predicate is helpful for that.

The second advantage - which I consider much more important - it 
that `predSwitch` returns a value. This means you can use it 
mid-expression - for example, to initialize a constant, or to 
determine a function argument. You can't do those things with 
`switch` because it's a statement. If you try to initialize a 
constant in a `switch` statement, the constant's scope will be 
limited to the `case` where it is defined, and if you want to use 
`switch` to determine a function argument, you're gonna have to 
write the rest of the function call in each `case`.


More information about the Digitalmars-d mailing list