所以对我来说这是一个新的。当我尝试比较2个整数时,错误告诉我Int应该是Void - > Int,这是我以前从未见过的东西。
代码:
public static function whenTouchEnds(event:TouchEvent){
for (item in currentTouches){
if (item.getId == event.touchPointID){
currentTouches.remove(item);
trace("removed touch");
break;
}
}
}
根据Haxe文档,我也尝试过:
public static function whenTouchEnds(event:TouchEvent){
for (item in currentTouches){
if (item.getId == event.touchPointID) break;
}
}
为了追踪和错误(这里的爱好程序员)甚至尝试过:
public static function whenTouchEnds(event:TouchEvent){
for (item in currentTouches){
var itemID:Int = item.getId;
var touchID:Int = event.touchPointID;
if (itemID == touchID){
currentTouches.remove(item);
trace("removed touch");
break;
}
}
}
他们都给了我同样的错误信息“Int should be Void - > Int”。这是我创建的Touch类,它返回带有getId函数的Integer:
class Touch
{
public var id:Int = 0;
public var xPos:Int = 0;
public var yPos:Int = 0;
public function new(Id:Int, X:Int, Y:Int)
{
id = Id;
xPos = X;
yPos = Y;
}
public function getX() : Int
{
return (xPos);
}
public function getY() : Int
{
return (yPos);
}
public function getId() : Int
{
return (id);
}
}
我不是在寻找一个简单的解决方案,而是在解释我在这里缺少的东西。我学的越多越好!
干杯
答案 0 :(得分:2)
罪魁祸首就是这条线:
if (item.getId == event.touchPointID)
由于没有括号,你实际上并不是calling getId()
函数 - 你将它与一个整数(没有意义)进行比较。试试这个:
if (item.getId() == event.touchPointID)
Void -> Int
是Haxe对function type的表示法,特别是一个不带参数(Void
)并返回整数的函数。您将此类函数与Int
进行比较,因此错误消息“Int
应为Void -> Int
”。
一个小代码风格的批评:get*
类中的Touch
函数似乎并没有用于任何目的,无论如何变量都是公共的。如果您想要做一些比在getter函数中返回变量更复杂的事情,您可能希望改为使用properties。