7 foreach (@crons) {
8 unless (index($_, "cks") != -1) {
9 unless (index($_, "aab") != -1) {
10 unless (index($_, "lam") != -1) {
11 push (@found, $_);
12 }
13 }
14 }
15 }为什么上面的输出不与下面的输出相同:
7 foreach (@crons) {
8 unless (index($_, "cks") != -1 && index($_, "aab") != -1 && index($_, "lam") != -1) {
9 push (@found, $_);
10 }
11 }@crons有字符串列表,我正在尝试获取所有没有"cks“、"aab”和"lam“的字符串。
第一部分代码做我想做的,但是第二部分没有,在我看来,它应该.
有谁能解释一下为什么它们不一样,为什么它们不提供相同的产出?
发布于 2014-03-05 16:16:47
让我们称你的条件为A,B,C。我们现在有了密码
unless (A) {
unless (B) {
unless (C) {unless可能非常混乱,所以我们只使用if编写它。
if (!A) {
if (!B) {
if (!C) {现在,我们将这些条件放在一起:
if (!A && !B && !C) {这也可以写成
if (not(A || B || C)) {这种等价称为de Morgan's law
发布于 2014-03-05 16:27:12
当测试字符串'cks'时,这两个逻辑的不等价性变得很明显。
第一个逻辑将计算为false,第二个逻辑将计算为true,因为它不包含字符串'aab'或'lam'。
https://stackoverflow.com/questions/22202925
复制相似问题