含义:语句A IMP B等同于逻辑 声明“如果A然后B.”只有当A为真且B为时,IMP B才为假 假。在所有其他情况下都是真的。
http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec09d55-7ffc.html
我可以依稀记得大学里的“含义”是什么。何时在现实世界中使用IMP运算符?
答案 0 :(得分:2)
我申请google-fu后
找到了这个:http://www.cfug-md.org/meetings/RichardBierregaardLogicwCFConditionals.ppt
它激发我发现IMP可能对编写单元测试有用:
assertTrue(Income >= 200000 IMP TaxRate == 0.35);
assertTrue(Income < 200000 AND Income >= 70000 IMP TaxRate == 0.28);
assertTrue(Income < 70000 AND Income >= 35000 IMP TaxRate == 0.20);
assertTrue(Income < 35000 AND Income >= 15000 IMP TaxRate == 0.10);
assertTrue(Income < 15000 IMP TaxRate == 0);
而不是
if (Income >= 200000) assertTrue(TaxRate == 0.35);
if (Income < 200000 AND Income >= 70000) assertTrue(TaxRate == 0.28);
if (Income < 70000 AND Income >= 35000) assertTrue(TaxRate == 0.20);
if (Income < 35000 AND Income >= 15000) assertTrue(TaxRate == 0.10);
if (Income < 15000) assertTrue(TaxRate == 0);
您认为IMP
版本更好吗?
答案 1 :(得分:1)
在现实世界中,能够做这样的事情,在可选参数上执行验证会很方便:
<cfif structKeyExists(URL, "a") IMP validateId(URL.a)>
其中我们只关心URL.a的验证(如果存在)。这是关于IMP,IMO最有用的应用(好吧,就像,它会)。
然而,由于IMP的实施中bug,这不起作用: - (
我认为Dale断言更长(和不正确)的逻辑比缩短的版本更容易阅读是不言而喻的错误,并且基于一个似是而非的前提来启动。他的立场是基于这样一种观念,即“某人不知道某事”是一种连续状态,即:当某人不知道某事(如“IMP”的意思)时,他们将永远不会知道它。这不是真的。一个人最初可能不会知道某些事情,但一旦他们发现了它,他们就会知道它。因此,不知道IMP曝光器如何工作的问题是一个非常短暂的问题。
我不认为需要IMP的情况经常出现,但是将它放在那里很方便。如果它正常工作它会更加方便; - )
答案 2 :(得分:0)
我认为你应该保持清醒,我从来没有见过它,从来没有必要使用它。其他开发人员大多不明白它是什么或意味着什么。
我宁愿写
<cfif a eq true and b eq false>
大于
<cfif a imp b>
第一个更清楚。