何时在ColdFusion中使用IMP运算符?

时间:2011-11-07 23:09:40

标签: coldfusion boolean-operations imp

  

含义:语句A IMP B等同于逻辑   声明“如果A然后B.”只有当A为真且B为时,IMP B才为假   假。在所有其他情况下都是真的。

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec09d55-7ffc.html

我可以依稀记得大学里的“含义”是什么。何时在现实世界中使用IMP运算符?

3 个答案:

答案 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>

第一个更清楚。