Actionscript 3 这行Actionscript是做什么的?

Actionscript 3 这行Actionscript是做什么的?,actionscript-3,Actionscript 3,我正在查看,大部分代码对我来说都很清楚。但是,这部分不是(请注意,我在前面加了一个箭头的那行): 什么是!isPartOfConvexHull()do?这是否意味着radius=nearestEdge.sitesDistance()*0.5仅在调用isPartOfConvexHull()返回false时执行?这会停止任何其他代码的执行吗?它相当于: if (!nearestEdge.isPartOfConvexHull()) { radius = nearestEdge.sitesDis

我正在查看,大部分代码对我来说都很清楚。但是,这部分不是(请注意,我在前面加了一个箭头的那行):

什么是
!isPartOfConvexHull()
do?这是否意味着
radius=nearestEdge.sitesDistance()*0.5
仅在调用
isPartOfConvexHull()返回
false
时执行?这会停止任何其他代码的执行吗?

它相当于:

if (!nearestEdge.isPartOfConvexHull()) {
    radius = nearestEdge.sitesDistance() * 0.5;
}

在以下行中:

var b:Boolean = expression1 && expression2;
expression1 && expression2;
如果
expression1
false
,则不会计算
expression2
,因为我们已经知道最终结果:
b=false

现在进入下一行:

var b:Boolean = expression1 && expression2;
expression1 && expression2;
同样的情况也会发生,只是我们没有将结果赋给变量


这正是你要问的关于where
的问题中发生的事情!nearestEdge.isPartOfConvexHull()
是第一个表达式,
(radius=nearestEdge.sitesDistance()*0.5)
是第二个表达式。

通过一些解释扩展@sch answer(我不知道将答案编辑为几乎两倍是否可以)

这是基于解释器的延迟执行。如果(!nearestEdge.isPartOfConvexHull())为False,则无需执行AND语句的第二部分即可知道它为False,然后将其保留为未执行状态。如果为true,则需要(然后完成)对complete语句的求值来判断该布尔值是否为true。这相当于一个if语句


TMHO这是一个糟糕的代码,因为它太过精简,很难理解。

围绕如何改进答案展开了一场竞赛;)这就是我所认为的——但语法让我困惑,我开始怀疑我最初的印象,怀疑它是否在以某种方式改变边缘的参数值。谢谢你的澄清!是的,令人困惑。。。当你要写开源代码时,不要写这样的东西,它会给你带来不好的报应!