2015-09-30 4 views
6

इस कोड डालें:क्या हक्स संदर्भ द्वारा पैरामीटर पास करता है या क्या यह प्रतिलिपि बनाता है?

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 संदर्भ द्वारा वस्तुओं गुजरता है पता है, और जब तक अन्यथा न कहा गया (& साथ उपसर्ग) सरणी तरह बातें कॉपी हो। क्या यह हक्स के साथ भी लागू होता है?

धन्यवाद।

उत्तर

5

AFAIK, Primitives (Int, Float, Bool, ...) मूल्य से गुजरते हैं। बाकी सब कुछ संदर्भ द्वारा पारित किया जाता है।

+5

"Primitives" पर भी संदर्भ द्वारा पारित किया जा सकता है। यह सिर्फ वे अपरिवर्तनीय हैं जिसका अर्थ है कि रेफ/वैल्यू से कोई फर्क नहीं पड़ता। –

+0

असल में, मैं कहूंगा कि हक्स में सबकुछ मूल्य से गुजरता है, जहां मूल प्रकार (बूल, इंट, फ्लोट) की प्रतिलिपि बनाई जाती है जहां वस्तुओं और अन्य प्रकारों के संदर्भों की प्रतिलिपि बनाई जाती है। बूल, इंट, फ्लोट और स्ट्रिंग हमेशा अपरिवर्तनीय होते हैं और मूल्य से तुलना करते हैं। स्ट्रिंग्स की प्रतिलिपि बनाई गई है या नहीं, या उनके संदर्भों की प्रतिलिपि बनाई गई है, मुझे लगता है कि यह लक्ष्य विशिष्ट है, लेकिन क्योंकि वे अपरिवर्तनीय हैं, इससे वास्तव में कोई फर्क नहीं पड़ता। –

संबंधित मुद्दे

 संबंधित मुद्दे