2015-09-30 8 views
6

Prendete questo codice:Haxe passa i parametri per riferimento o ne fa una copia?

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

significa 'textureAtlas' viene passato per riferimento o vuol vengono copiati?

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

so PHP passa gli oggetti di riferimento, e le cose come le matrici vengono copiati se non diversamente specificato (prefisso &). Lo stesso vale per Haxe?

Grazie.

risposta

5

AFAIK, Primitive (Int, Float, Bool, ...) vengono passati per valore. Tutto il resto è passato per riferimento.

+5

I "primitivi" possono essere considerati anche per riferimento. Sono semplicemente immutabili, il che significa che per valore/valore non importa nemmeno. –

+0

In realtà, direi che tutto in Haxe viene passato per valore, dove i tipi di base (Bool, Int, Float) vengono copiati direttamente dove gli oggetti e altri tipi hanno copiato i loro riferimenti. Bool, Int, Float e String sono sempre immutabili e confrontati in base al valore. Indipendentemente dal fatto che le stringhe siano copiate o che i loro riferimenti siano copiati, penso che sia specifico per l'obiettivo, ma dato che sono immutabili non ha molta importanza. –

Problemi correlati