digitalmars.D.learn - D 2.x invariant question
- Charles D Hixson (10/10) Oct 31 2007 Would the following function:
- Jarrett Billingsley (13/23) Oct 31 2007 I think this makes the method opIndex invariant, which means this functi...
- Charles D Hixson (3/33) Oct 31 2007 Thanks.
Would the following function: invariant Body opIndex (Key k) { if (k in _cache) { .... return _cache[k].bdy; } return null; } return values that were invariant, or would that type have to be declared at the declaration of the type "Body"?
Oct 31 2007
"Charles D Hixson" <charleshixsn earthlink.net> wrote in message news:fgao71$21fp$1 digitalmars.com...Would the following function: invariant Body opIndex (Key k) { if (k in _cache) { .... return _cache[k].bdy; } return null; } return values that were invariant, or would that type have to be declared at the declaration of the type "Body"?I think this makes the method opIndex invariant, which means this function can only access invariant members, or something. If you want an invariant(Body), use... invariant(Body) as the return type. Aside: performance increase, you can avoid the double lookup: if(auto val = k in cache) { ..use val here.. return val.bdy; } 'in' returns a pointer to the value, and you can declare and assign a variable in the condition of an 'if' statement.
Oct 31 2007
Jarrett Billingsley wrote:"Charles D Hixson" <charleshixsn earthlink.net> wrote in message news:fgao71$21fp$1 digitalmars.com...Thanks. (I *kenw* that about "in", but I keep forgetting.)Would the following function: invariant Body opIndex (Key k) { if (k in _cache) { .... return _cache[k].bdy; } return null; } return values that were invariant, or would that type have to be declared at the declaration of the type "Body"?I think this makes the method opIndex invariant, which means this function can only access invariant members, or something. If you want an invariant(Body), use... invariant(Body) as the return type. Aside: performance increase, you can avoid the double lookup: if(auto val = k in cache) { ..use val here.. return val.bdy; } 'in' returns a pointer to the value, and you can declare and assign a variable in the condition of an 'if' statement.
Oct 31 2007