Haxe - 浮动空混淆

Haxe - float null confusion

这是我在 Haxe 中的代码示例

public function new(CminSpeed:Null<Float>,CmaxSpeed:Null<Float>)
{
    if (CminSpeed == null)
    {
        CminSpeed = 0.1;
    }
    if (CmaxSpeed == null)
    {
        CmaxSpeed = 3;
    }

    minSpeed = CminSpeed;
    maxSpeed = CmaxSpeed;
}

我试图在构造函数中为变量设置默认值,而参数为空。但它永远不会跳入条件块,即使值为空。因此在结果变量 minSpeedmaxSpeed 传递 null 时始终为 null。

我是 haxe 的初学者,我真的不明白可为 null 的对象是如何工作的,文档无法帮助我解决这个问题。

我认为您输入的值不正确。我创建了一个简单的例子,检查一下: http://try.haxe.org/#54200 对我来说,这看起来像是预期的结果。你基本上做对了。

Null<T> 的想法是永远不要使用 if (bla==0)(因为那真的很糟糕),而是使用 if (bla==null)(可为空)。那应该可以,否则就是错误。

顺便说一句。 try.haxe.org 是检查此类功能的好工具。您甚至可以看到 JavaScript-target 的输出源。在 swf-target 中(据我所知)一个对象被包裹在浮点数周围,所以如果期望性能,你应该小心处理它。

此外,如果您还没有看过,请查看:http://haxe.org/manual/types-nullability.html