使用字符串动态访问自定义方法

发布于 2024-07-13 21:17:33 字数 849 浏览 3 评论 0原文

我正在创建一个二维列表,该列表在“日”末尾有连续的数字,用作 DataGrid 的 dataProvider 我一直通过命令访问它们
dg1.selectedItem.day1
dg1.selectedItem.day2
dg1.selectedItem.day3
等等...

有什么方法可以获取字符串(“day”+i)并将其转换为(这是什么?变量名?) 这样我就可以按照以下方式做一些事情:

for(var i:Number=1; i<numFields; i++)
{
  dg1.selectedIndex = i-1;
  dg1.selectedItem.(mysteryFunction("day"+i)) = 42;
}

如果有一个函数可以用于 MysteryFunction,或者使用什么数据类型,任何信息都会非常有帮助


这就是我一直在使用的(太乏味了):

 
    <字段> 
        <第一天> 
        <第2天> 
        <第三天> 
     
    <字段> 
        <第一天> 
        <第2天> 
        <第三天> 
     

    ... 
   
  

I am creating a two-dimensional list that has consecutive numbers at the end of "day", for use as dataProvider for a DataGrid
i have been accessing them via the command
dg1.selectedItem.day1
dg1.selectedItem.day2
dg1.selectedItem.day3
etc...

is there any way to take the string ("day"+i) and convert it into a (what is it? variable name?)
so that i can do something along the lines of:

for(var i:Number=1; i<numFields; i++)
{
  dg1.selectedIndex = i-1;
  dg1.selectedItem.(mysteryFunction("day"+i)) = 42;
}

if there's a function that i could use for mysteryFunction, or what data type to use, any info would be very helpful

this is what i've been using (so tedious):

<mx:XMLList id="sched">
  <field>
      <day1></day1>
      <day2></day2>
      <day3></day3>
  </field>
  <field>
      <day1></day1>
      <day2></day2>
      <day3></day3>
  </field>

  ...
</mx:XMLList>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

御守 2024-07-20 21:17:33

您正在寻找的“神秘函数”就像用括号进行索引一样简单:

for(var i:Number=1; i<numFields; i++)
{
    dg1.selectedIndex = i-1;
    dg1.selectedItem["day"+i] = 42;
}

令人惊讶的是,它被称为属性。

The "mystery function" you are looking for is as simple as indexing with brackets:

for(var i:Number=1; i<numFields; i++)
{
    dg1.selectedIndex = i-1;
    dg1.selectedItem["day"+i] = 42;
}

And it is called, surprisingly, an attribute.

許願樹丅啲祈禱 2024-07-20 21:17:33

使用 Array 或者如果您是要绑定它(我打赌)使用 ArrayCollection 而不是单独命名这些变量。

如果成员是由某个程序生成的,则最好将所有这些成员放入我上面提到的集合类之一中,然后开始处理。 从长远来看,它让生活变得更轻松。

E4X 是处理交易时的最佳选择使用 XML。 Mozilla 人员对该技术有一个可以说更好的解释。 因此,如果您的 XML 存储在变量中,如下所示:

var tree:XML = <field>
    <day1></day1>
    <day2></day2>
    <day3></day3>

您可以简单地执行以下操作:

tree.day1 = 42;

为什么需要这个 mysteryFunction()dataProvider 对象只是某种类型的集合。 您已经知道类型了,对吧? 请阅读此内容

反正没有这么神秘的功能。 但请注意,字符串与数字连接会将数字转换为字符串。 尝试

trace("str " + 42);

Use an Array or if you are going to bind it (which I am kind of betting on) use ArrayCollection instead of naming these variables individually.

If the members are generated by some program, you better put all of these in one of the collection classes I mentioned above and then start the processing. It makes life easier in the long run.

E4X is the way to go when dealing with XML. The Mozilla guys have an arguably better explanation of that technology. So, if your XML is stored in a variable as:

var tree:XML = <field>
    <day1></day1>
    <day2></day2>
    <day3></day3>

You can simply do:

tree.day1 = 42;

Why would you want this mysteryFunction()? A dataProvider object is just a collection of some Type. You know the type already, right? Read this.

Anyway, there is no such mystery function. Note, however, string concatenation with a number converts the number to a string. Try

trace("str " + 42);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文