具有返回类型的ActionScript自定义类?

时间:2010-05-24 15:33:11

标签: actionscript-3 class return-type

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

我想基本上在它自己的.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;
        }
    }
}

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

if(CompareInts(1,5)== true)。或者通过写跟踪输出'true'(CompareInts(1,5));

3 个答案:

答案 0 :(得分:1)

您有两个选择:

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);

答案 1 :(得分: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;
 }
}

答案 2 :(得分:1)

AS3构造函数永远不能有返回值。如果要将此方法保留在类中,则让构造函数只调用init()函数并使init()返回值。

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