首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl嵌套,除非语句不等于使用&&s?

perl嵌套,除非语句不等于使用&&s?
EN

Stack Overflow用户
提问于 2014-03-05 16:06:02
回答 2查看 339关注 0票数 6
代码语言:javascript
复制
  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 }

为什么上面的输出不与下面的输出相同:

代码语言:javascript
复制
  7 foreach (@crons) {
  8     unless (index($_, "cks") != -1 && index($_, "aab") != -1 && index($_, "lam") != -1) {
  9         push (@found, $_);
 10     }
 11 }

@crons有字符串列表,我正在尝试获取所有没有"cks“、"aab”和"lam“的字符串。

第一部分代码做我想做的,但是第二部分没有,在我看来,它应该.

有谁能解释一下为什么它们不一样,为什么它们不提供相同的产出?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-05 16:16:47

让我们称你的条件为ABC。我们现在有了密码

代码语言:javascript
复制
unless (A) {
  unless (B) {
    unless (C) {

unless可能非常混乱,所以我们只使用if编写它。

代码语言:javascript
复制
if (!A) {
  if (!B) {
    if (!C) {

现在,我们将这些条件放在一起:

代码语言:javascript
复制
if (!A && !B && !C) {

这也可以写成

代码语言:javascript
复制
if (not(A || B || C)) {

这种等价称为de Morgan's law

票数 11
EN

Stack Overflow用户

发布于 2014-03-05 16:27:12

当测试字符串'cks'时,这两个逻辑的不等价性变得很明显。

第一个逻辑将计算为false,第二个逻辑将计算为true,因为它不包含字符串'aab''lam'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22202925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档