request in args option for opApply
    BCS 
    ao at pathlink.com
       
    Sun Jan 28 14:51:24 PST 2007
    
    
  
Reply to Frits,
> BCS wrote:
> 
>> The foreach body is turned into a delegate taking (inout int), but it
>> is not marked as inout! I have a case where I'm trying to use opApply
>> where it can't be inout. Is this a bug?
>
> According to the spec, the signature of opApply must be "int
> opApply(int delegate(inout Type [, ...]) dg);", so it's actually a bug
> in your code that the delegate's parameter it isn't marked inout.
> 
Hm.. Is that new? I shure, it used to allow "in".
> (unless of course you prefer to consider it a 'bug' in the spec that
> it's not allowed to be marked 'in' :) )
> 
Yeah, I guess I'll have to stick with that approach. What else am I to do 
in a "must not modify data" loop? Copy everything? Or what about a case like 
this:
class C
{
  char[] str;
  int opApply(int delegate(inout char[]) dg)
  {
    for(int i = 1; i<=str.length; i++)
      for(int ret = dg(str[0..i]))      // fails b/c slices aren't L-values
        return ret;
  }
}
Oh well, I guess I'll just have to find workarounds.
    
    
More information about the Digitalmars-d-bugs
mailing list