首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简化if语句?

简化if语句?
EN

Stack Overflow用户
提问于 2013-11-29 06:40:57
回答 4查看 102关注 0票数 2

有没有可能简化这个if语句?

如果是这样,答案是什么?

代码语言:javascript
复制
    if (type)
    {
        if(NdotL >= 0.0)
        {
            color   += Idiff + Ispec;
        }
    }
    else
    {
        color   += Idiff + Ispec;
    }
EN

回答 4

Stack Overflow用户

发布于 2013-11-29 06:48:57

从布尔代数的角度来考虑这一点。你有两个条件

代码语言:javascript
复制
A = (type)
B = (NdotL >= 0.0 )

并在下列情况下执行语句

代码语言:javascript
复制
A * B
/A

(我用/A表示“非A",用*表示" and”)

所以你唯一不会执行的是

代码语言:javascript
复制
A * /B

这意味着您的语句应该是

代码语言:javascript
复制
if (!((type) && NdotL < 0.0 )) {
  // do your thing
}

或者,使用布尔型标识

代码语言:javascript
复制
(A * B) = /(/A + /B)

您可以将您的条件重写为

代码语言:javascript
复制
( /A + B )

if ( !(type) || ( NdotL >= 0 ) ) {
   // do your thing
}
票数 6
EN

Stack Overflow用户

发布于 2013-11-29 06:43:22

代码语言:javascript
复制
if (!type || NdotL >= 0.0)
{
    color += Idiff + Ispec;
}
票数 5
EN

Stack Overflow用户

发布于 2013-11-29 06:45:11

使用

代码语言:javascript
复制
if (type && NdotL > 0.0){
   Blah....
} else {
   Buegh...
}

这样它就结合了这两个条件。

对于缩进之类的事情真的很抱歉,但是这个网站的移动版本不允许你输入代码,我只是想帮你XD!

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

https://stackoverflow.com/questions/20275774

复制
相关文章

相似问题

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