digitalmars.D.learn - minimal evaluation
Hi All, Is minimal evaluation always enabled in D? I want to write a function IsNull(), so that I can check the precondition as follows: if (isNull(foo) || isNull(foo.getBar) || isNull(foo.getBar.getBar2) { return false; } // normal code goes here If an argument is null, the IsNull() will return false. Internally it will be logged to console as well. But I am not sure, if dmd-compiler generates code without minimal evaluation in some cases. If minimal evaluation is not always enabled. I cannot do precodition check in my way. --Qian
Apr 06 2009
if (isNull(foo) || isNull(foo.getBar) || isNull(foo.getBar.getBar2) { return false; }Update: If minimal evaluation is not always enabled, and foo.getBar is NULL. I will get a segfault when evaluating foo.getBar.getBar2.
Apr 06 2009
On 06.04.2009 13:30, Qian Xu wrote:Hi All, Is minimal evaluation always enabled in D? I want to write a function IsNull(), so that I can check the precondition as follows: if (isNull(foo) || isNull(foo.getBar) || isNull(foo.getBar.getBar2) { return false; } // normal code goes here If an argument is null, the IsNull() will return false. Internally it will be logged to console as well. But I am not sure, if dmd-compiler generates code without minimal evaluation in some cases. If minimal evaluation is not always enabled. I cannot do precodition check in my way. --QianIf you mean short-circuit evalutation, I'm pretty sure that's always what the compiler does.
Apr 06 2009
torhu wrote:If you mean short-circuit evalutation, I'm pretty sure that's always what the compiler does.Thanks. Somebody posted this link: http://digitalmars.com/d/1.0/expression.html#OrOrExpression
Apr 06 2009