2010-05-24 70 views
0

我只是知道這是一個愚蠢的問題,所以提前請原諒。帶有返回類型的ActionScript自定義類?

我想從本質上對一個簡單的函數進行分類.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)==真)。或通過寫入trace(CompareInts(1,5))輸出'true';

回答

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文件只有一個公共定義,就可以(因爲這意味着在「頂級」級別可以有一個公共類,一個接口,一個公共類,一個公共變量或一個公共名稱空間它不會,如果你試圖有一個以上的或工作。

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

,你可以內嵌到這個單行他們完全的類/函數(括號不是neccesary,我只是說他們清晰度):

var compare:Boolean = (small < big); 
+0

甚至爲什麼不把它一條線。 return small 2010-05-25 03:35:59

+0

是的。這就是我在第三個選項中提出的建議(除去函數調用)。對於另外兩個我只是粘貼了原來的功能。 – 2010-05-25 03:49:21

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; 
} 
} 
1

的AS3構造函數不能有返回值。如果你想保持這個方法在一個類中,然後讓構造函數調用一個init()函數並讓init()返回值。

希望有助於澄清「爲什麼?」那可能會在你腦海中旋轉。

+0

這是一種挑剔,但一個構造函數確實返回一個值(對新創建的對象的引用)。不過,您不能將返回的類型放入構造函數定義中。 – 2010-05-25 03:54:34