2015-09-30 65 views
6

把這個代碼:Haxe通過引用傳遞參數還是複製副本?

function createGUIHud():Void 
{ 
    this.screen.gameHud = new NormalGameHud(10, 0, this.screen.getTextureAtlas()); 
    this.screen.gameHud.x = FlxG.width - (this.screen.gameHud.width + GameSize.getPositionByPlatform(10)); 
    this.screen.gameHud.y = GameSize.getPositionByPlatform(10); 
} 

// NormalGameHud.hx 

/** 
* @param lives 
* @param corn 
* @param textureAtlas 
*/ 
public function new(lives:Int = 10, corn:Int = 0, textureAtlas:SparrowData) 
{ 
    super(0, 0, 30); 
    this.lives = lives; 
    this.cornCount = corn; 
    this.textureAtlas = textureAtlas; 

    this.createScoreboard(); 
    this.createLivesCount(); 
    this.createCornCounter(); 
} 

是「textureAtlas」獲得通過引用傳遞或者它被複制?

http://api.haxeflixel.com/flixel/util/loaders/SparrowData.html

我知道PHP按引用傳遞對象,事情就是這樣數組被複制,除非另有說明(與&前綴)。 Haxe也適用嗎?

謝謝。

回答

5

AFAIK,基元(Int,Float,Bool,...)按值傳遞。其他一切都通過參考傳遞。

+5

「原始材料」也可以考慮通過參考。它只是它們是不變的,這意味着通過ref/value甚至不重要。 –

+0

實際上,我會說Haxe中的所有東西都是按值傳遞的,其中基本類型(Bool,Int,Float)直接複製到對象和其他類型的引用被複制的地方。 Bool,Int,Float和String總是不變的,並且通過值進行比較。無論是否複製字符串或複製引用,我認爲它們都是特定於目標的,但由於它們是不可變的,所以它並不重要。 –

相關問題