zoukankan      html  css  js  c++  java
  • 使用flex Array碰到的问题(原创)

    前日,一个朋友使用flex Arra时碰到了一个问题,百思不得其解。问题是大概是这样的:
      var arr1:Array = new Array();
      var arr2:Array = new Array();
      for(var i:int = 0; i < n; i++)//for 循环
      {
        arr1 = getArray(i);//返回一个array
        arr2[i] = arr1;//(*)
      }
      trace(arr2);//输出结果每行都是最后一个arr1
      其实这个问题主要是这位朋友习惯使用C++而造成的。在C++中,我们d定义了一个变量,改变它某一时刻的值,并不会影响到他以前保存的值。但在flex中不一样。flex对于除基础类型(int,Boolean之类的)之外,都是按引用操作。所以(*)这个步骤,其实每次都是往arr2中放入arr1的一个内存地址的拷贝(暂时先这么说吧,我也不知道flex内部的机制是否这样,大概是这个意思)。因此,arr2的每一行指向的其实都是同一个内存,当循环结束后,当然arr2中的内容都同最后一个arr1一样。
      了解了这个缘由,那么便很容易解决了。
       var arr1:Array;
      var arr2:Array = new Array();
      for(var i:int = 0; i < n; i++)//for 循环
      {
        arr1 = new Array();//每次new一个arr1
        arr1 = getArray(i);//返回一个array
        arr2[i] = arr1;//(*)
      }
                                      David Cai 09-08-16早 于金山公司
  • 相关阅读:
    最大团问题
    树的重心与相关性质
    2020年牛客算法入门课练习赛3 B
    牛客练习赛66 E
    浅谈后缀数组SA
    [随机化算法] 听天由命?浅谈Simulate Anneal模拟退火算法
    “优美的暴力”——树上启发式合并
    [线段树系列] LCT打延迟标记的正确姿势
    [Tarjan系列] Tarjan算法与有向图的SCC
    [Tarjan系列] 无向图e-DCC和v-DCC的缩点
  • 原文地址:https://www.cnblogs.com/xingluzhe/p/1547083.html
Copyright © 2011-2022 走看看