以下是我在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;
}
我试图在构造函数中将默认值设置为变量,而参数为null。但它永远不会跳转到条件块,即使值为空。因此,结果变量minSpeed
和maxSpeed
在传递null时始终为null。
我是haxe的唠叨,我真的不明白可空的对象是如何工作的,文档无法帮助我解决这个问题。
答案 0 :(得分:10)
我认为您的输入值不正确。我创建了一个简单的例子,看看它: 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