有没有可能简化这个if语句?简化if语句?
如果是这样的答案是什么?
if (type)
{
if(NdotL >= 0.0)
{
color += Idiff + Ispec;
}
}
else
{
color += Idiff + Ispec;
}
有没有可能简化这个if语句?简化if语句?
如果是这样的答案是什么?
if (type)
{
if(NdotL >= 0.0)
{
color += Idiff + Ispec;
}
}
else
{
color += Idiff + Ispec;
}
if (!type || NdotL >= 0.0)
{
color += Idiff + Ispec;
}
试一下:
color+=(type && NdotL >= 0.0)? Idiff + Ispec:Idiff + Ispec;
这里的关键是*简化*。此外,这完全是空的。你的两个返回值都是一样的。 – christopher
不引入错误也很好。 – Jon
Lol我认为这可能会吸引一些人,这是一个漫长的夜晚,我的大脑无法绕过这个简单的问题,我们都在那里。 –
使用
if (type && NdotL > 0.0){
Blah....
} else {
Buegh...
}
正是如此,它结合了两个条件。
对于缩进等真的很抱歉,但是这个网站的移动版本不让你输入代码,我只是想帮你这么多XD!
I4r3nZu写的代码行数可能会简单得多。这种方式应该更容易阅读,但如果你要优雅,他说的是好的! –
为您固定缩进。实际上,只需在移动网站上输入一个换行符后跟四个空格即可输入每行代码 - 我经常这样做。我认为你的意思是'> ='不'''。我会将其归咎于手机网站... – Floris
用布尔代数来思考这个问题。你有两个条件
A = (type)
B = (NdotL >= 0.0)
你执行你的语句时
A * B
/A
(我用/A
表示 “不是”,并*
表示 “AND”)
所以,唯一的你不执行的时间是
A * /B
这意味着你的陈述肩膀d是
if (!((type) && NdotL < 0.0)) {
// do your thing
}
或者,使用布尔身份
(A * B) = /(/A + /B)
为
(/A + B)
if (!(type) || (NdotL >= 0)) {
// do your thing
}
有四种可能的状态,其中只有一个结果,在声明中,你可以重写你的病情*不*正在执行...... –