digitalmars.D - Make if statement with stricter test
if(AA) <-- invalid char[][char[]] k; if (k) // this code should be invalid, cause it could strongly be a typo or some porting mistake from some C source I hope if(identifier) only work for Bool & Pointer types
Apr 19 2007
Davidl Wrote:if(AA) <-- invalid char[][char[]] k; if (k) // this code should be invalid, cause it could strongly be a typo or some porting mistake from some C source I hope if(identifier) only work for Bool & Pointer typesFor an AA, I believe this works out to length - the length of the char[][] keys; if(k) I believe checks k.keys.length by virtue of being at *(&k), which is 0 until you assign it a buffer. This seems like the right behavior to me for an AA. if(k) asks if k is a non-empty Associative Array.
Apr 19 2007
no if(k) doesn't indicate an empty AA, it just tests whether it has ever been used. if k has been used and then cleared, still if(k) test would passif(AA) <-- invalid char[][char[]] k; if (k) // this code should be invalid, cause it could strongly be a typo or some porting mistake from some C source I hope if(identifier) only work for Bool & Pointer typesFor an AA, I believe this works out to length - the length of the char[][] keys; if(k) I believe checks k.keys.length by virtue of being at *(&k), which is 0 until you assign it a buffer. This seems like the right behavior to me for an AA. if(k) asks if k is a non-empty Associative Array.
Apr 19 2007