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;
}
我试图在构造函数中为变量设置默认值,而参数为空。但它永远不会跳入条件块,即使值为空。因此在结果变量 minSpeed
和 maxSpeed
传递 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
这是我在 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;
}
我试图在构造函数中为变量设置默认值,而参数为空。但它永远不会跳入条件块,即使值为空。因此在结果变量 minSpeed
和 maxSpeed
传递 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