"Int should be Void -> Int" 比较两个整数时
"Int should be Void -> Int" when comparing two integers
所以这对我来说是新的。当我尝试比较 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 class,其中 returns 一个具有 getId 函数的整数:
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);
}
}
我不是在寻找一个简单的解决方案,而是在寻找我在这里缺少的东西的解释。越学越好!
干杯
罪魁祸首是这一行:
if (item.getId == event.touchPointID)
由于没有括号,您实际上并不是 calling 此处的 getId()
函数 - 您是将其与整数进行比较(这没有意义)。试试这个:
if (item.getId() == event.touchPointID)
Void -> Int
是 Haxe 对 function type 的表示法,特别是一个不带参数 (Void
) 和 returns 整数的函数。您正在将这样的函数与 Int
进行比较,因此错误消息“Int
应该是 Void -> Int
”。
一个小的代码风格批评:Touch
class 中的 get*
函数似乎没有任何作用,无论如何变量都是 public。如果您想做一些比在 getter 函数中返回变量更复杂的事情,您可能需要考虑使用 properties。
所以这对我来说是新的。当我尝试比较 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 class,其中 returns 一个具有 getId 函数的整数:
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);
}
}
我不是在寻找一个简单的解决方案,而是在寻找我在这里缺少的东西的解释。越学越好!
干杯
罪魁祸首是这一行:
if (item.getId == event.touchPointID)
由于没有括号,您实际上并不是 calling 此处的 getId()
函数 - 您是将其与整数进行比较(这没有意义)。试试这个:
if (item.getId() == event.touchPointID)
Void -> Int
是 Haxe 对 function type 的表示法,特别是一个不带参数 (Void
) 和 returns 整数的函数。您正在将这样的函数与 Int
进行比较,因此错误消息“Int
应该是 Void -> Int
”。
一个小的代码风格批评:Touch
class 中的 get*
函数似乎没有任何作用,无论如何变量都是 public。如果您想做一些比在 getter 函数中返回变量更复杂的事情,您可能需要考虑使用 properties。