Передает ли 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?

спасибо.

2 ответов


AFAIK, примитивы (Int, Float, Bool,...) передаются по значению. Все остальное передается по ссылке.


Если он передает объекты по ссылке, не должен ли этот код работать?

https://try.haxe.org/#dd761

Он должен был создать экземпляр "b", затем установить его строковую переменную, но этого не происходит. Является ли это целевой функцией или я понимаю что-то неправильно?