这行Actionscript有什么作用?

Cla*_*lay 2 actionscript-3

我正在查看as3delaunay库,大部分代码对我来说很清楚.但是,这部分不是(请注意我在前面加上箭头的行):

    public function circles():Vector.<Circle>
    {
        var circles:Vector.<Circle> = new Vector.<Circle>();
        for each (var site:Site in _sites)
        {
            var radius:Number = 0;
            var nearestEdge:Edge = site.nearestEdge();

=======>>   !nearestEdge.isPartOfConvexHull() && (radius = nearestEdge.sitesDistance() * 0.5);
            circles.push(new Circle(site.x, site.y, radius));
        }
        return circles;
    }
Run Code Online (Sandbox Code Playgroud)

作为参考,isPartOfConvexHull()在发现Edge.as,看起来像这样:

    internal function isPartOfConvexHull():Boolean
    {
        return (_leftVertex == null || _rightVertex == null);
    }
Run Code Online (Sandbox Code Playgroud)

怎么!nearestEdge.isPartOfConvexHull()办?这是否意味着从调用返回的radius = nearestEdge.sitesDistance() * 0.5唯一执行if ?这是否会停止执行任何其他代码?falseisPartOfConvexHull()

sch*_*sch 5

它相当于:

if (!nearestEdge.isPartOfConvexHull()) {
    radius = nearestEdge.sitesDistance() * 0.5;
}
Run Code Online (Sandbox Code Playgroud)

在以下行中:

var b:Boolean = expression1 && expression2;
Run Code Online (Sandbox Code Playgroud)

expression2将不进行评估,如果expression1false因为我们已经知道了最终结果:b = false.

现在在以下行中:

expression1 && expression2;
Run Code Online (Sandbox Code Playgroud)

除了我们没有将结果分配给变量这一事实外,会发生同样的事情.

这就是你要问!nearestEdge.isPartOfConvexHull()的第一个表达式在哪里(radius = nearestEdge.sitesDistance() * 0.5),第二个表达式.