0

我只知道这是一个愚蠢的问题,所以请提前原谅。

我想基本上将一个简单的函数归类在它自己的 .as 文件中。该函数比较整数。但我不知道如何调用类并接收布尔返回。

这是我的课

package
{
public class CompareInts
    {
    public function CompareInts(small:int, big:int)
        {
        compare(small, big);
        }

    private function compare(small:int, big:int):Boolean
        {
        if (small < big)
            return true;
            else
            return false;
        }
    }
}

所以现在我想写这样的东西:

如果 (CompareInts(1, 5) == true)。或通过编写 trace(CompareInts(1, 5)) 输出“true”;

4

3 回答 3

1

您有 2 个选项:

1)使您的比较功能公开和静态。

static public function compare(small:int,big:int):Boolean {
{
    if (small < big)
        return true;
    else
        return false;
    }
}

并称之为:

CompareInts.compare(1,5);

2)你实际上并不需要一个类。你可以只使用一个函数。只要每个 AS 文件只有一个公共定义,就可以了(我的意思是在“顶层”级别,您可以拥有公共类、接口、公共函数、公共 var 或公共命名空间. 如果您尝试拥有多个,它将​​无法正常工作。

package {
    public function compare(small:int,big:int):Boolean {
    {
        if (small < big)
            return true;
        else
            return false;
    }
}

或者,您可以将其内联到一行并完全放弃类/函数(括号不是必需的,我只是为了清楚起见添加了它们):

var compare:Boolean = (small < big);
于 2010-05-24T16:02:48.560 回答
1
  • 您正在创建一个Class,然后function是它的成员,Class因此要调用它们,您必须实例化Class然后调用创建的实例的函数。

  • 也是CompareInts类的构造函数,它不能返回任何东西

与您的班级对应的工作代码将是:

package {
 public class CompareInts {

    public function CompareInts(){}

    public function compare(small:int, big:int):Boolean {
        if (small < big)
            return true;
            else
            return false;
    }
 }
} 

new CompareInts().compare(1, 2);

但这有点矫枉过正,所以你可以做的是在你的类中创建一个静态函数,然后直接调用它而不需要实例化类。

package {
 public class Compare {
    public static function compareInts(small:int, big:int):Boolean {
        if (small < big)
            return true;
            else
            return false;
    }
 }
} 

Compare.compareInts(1, 2)

如果您不想将更多函数分组到一个类中,您总是可以将一个函数声明到一个包中:

package {
 public function compareInts(small:int, big:int):Boolean {
        if (small < big)
            return true;
            else
            return false;
 }
}
于 2010-05-24T16:10:04.417 回答
1

AS3 构造函数永远不能有返回值。如果您想将此方法保留在一个类中,那么让构造函数只调用一个 init() 函数并让 init() 返回值。

希望这有助于澄清“为什么?” 这可能在你脑海中盘旋。

于 2010-05-25T03:33:56.730 回答