Пользовательский класс ActionScript с возвращаемым типом? - PullRequest
0 голосов
/ 24 мая 2010

Я просто знаю, что это глупый вопрос, поэтому извините меня заранее.

Я хочу по существу классифицировать простую функцию в ее собственном .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 ]

1 голос
/ 24 мая 2010
  • Вы создаете 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)

Если вы не хотите группировать больше функций в Class, вы всегда можете объявить одну функцию в Package:

package {
 public function compareInts(small:int, big:int):Boolean {
        if (small < big)
            return true;
            else
            return false;
 }
}
1 голос
/ 25 мая 2010

Конструктор AS3 никогда не может иметь возвращаемого значения.Если вы хотите сохранить этот метод в классе, тогда пусть конструктор просто вызовет функцию init () и вернет значения init ().

Надеюсь, что это поможет прояснить, почему?это может кружиться в твоей голове.

1 голос
/ 24 мая 2010

У вас есть 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-файле есть только одно общедоступное определение, все будет в порядке (под этим я подразумеваю, что на «верхнем» уровне вы можете иметь публичный класс, интерфейс, публичную функцию, публичную переменную или публичное пространство именЭто не сработает, если вы попытаетесь использовать более одного.

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

Или, вы можете вставить это в одну строку и полностью обрезать класс / функцию (парены не нужны, я просто добавилих для наглядности):

var compare:Boolean = (small < big);
...