代码之家  ›  专栏  ›  技术社区  ›  DyreSchlock

为什么Flex的ArrayCollection的Contain方法查看内存引用?

  •  5
  • DyreSchlock  · 技术社区  · 17 年前

    使用时 .contains() ArrayCollection 在Flex中,它将始终查看内存引用。它看起来不像是在看一个 .equals() .toString() 方法或任何可重写的。相反,我需要遍历 每次都要检查每一件物品,直到我找到我要找的东西。

    有人知道为什么Flex/ActionScript是这样制作的吗?为什么不提供一种让人们使用 contains()

    4 回复  |  直到 14 年前
        1
  •  2
  •   cliff.meyers    17 年前

        2
  •  2
  •   Christian Nunciato    17 年前

    contains()方法通过引用进行搜索,正确(我相信甚至对于原语也是如此),因此,如果您试图在ArrayCollection中查找字符串或int,则必须通过循环或搜索的某种变体自己进行搜索。我不认为我们中的任何人都能告诉你为什么这个方法上没有一个可选的参数来指示是按ref还是按val进行搜索;就像他们说的那样。

    但我绝对要警告你不要在框架代码上打补丁——那只会自找麻烦。:)

        3
  •  2
  •   DyreSchlock    17 年前

    通过让对象实现IUID接口并为对象提供自己的UID,您可以绕过整个默认UID。ArrayCollection将查看您提供给它的UID。

        4
  •  0
  •   Zjoia    12 年前

    我想提出一个简单的建议:

    in_array($haystack, $arrayCollection->toArray());