2015-09-30 5 views
6

Nehmen Sie diesen Code:Übergibt Haxe Parameter per Referenz oder macht es eine Kopie?

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' Does durch Verweis übergeben bekommen oder es kopiert bekommt?

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

Ich weiß, dass PHP-Objekte durch Verweis übergibt, und Dinge wie Arrays kopiert werden, sofern nicht anders angegeben (mit dem Präfix &). Gilt das auch für Haxe?

Vielen Dank.

Antwort

5

AFAIK, Primitive (Int, Float, Bool, ...) werden nach Wert übergeben. Alles andere wird als Referenz weitergegeben.

+5

"Primitiven" können berücksichtigt werden, auch als Referenz übergeben werden. Es sind nur sie sind unveränderlich, was bedeutet, dass durch ref/Wert nicht einmal von Bedeutung ist. –

+0

Eigentlich würde ich sagen, dass alles in Haxe nach Wert übergeben wird, wo Grundtypen (Bool, Int, Float) direkt kopiert werden, wo Objekte und andere Typen ihre Referenzen kopiert haben. Bool, Int, Float und String sind immer unveränderlich und werden nach Wert verglichen. Ob Strings kopiert werden oder nicht, oder ihre Referenzen kopiert werden, denke ich ist zielspezifisch, aber da sie unveränderlich sind, spielt es keine Rolle. –

Verwandte Themen