1

有没有人找到一种动态声明变量的方法?

我有一些变量可以是无限的......

val1
val2
val3
val4...

有没有办法即时创建这些,比如......

for(loop though){
  val + '1' = dosomething('1') 
}

我知道它看起来不会像上面那样,但希望你能明白它的要点。

4

2 回答 2

1

Apex 是一种编译的、未解析的/动态语言。你可以用 Javascript 或 PHP 来完成这样的事情,但(据我所知)不能用 Java。当你深入了解它时 - Salesforce 是基于 Oracle 数据库和 Java 构建的,因此 Apex 是他们认为最必要的 Java 调用的一种精简包装器。

只是出于好奇——你为什么需要那个?

如果您需要顺序访问,请使用 Jeremy 的想法和循环。或者...

如果您需要“唯一键 -> 某个值”,请使用 Maps。

Map<String, Double> myMap = new Map<String, Double>();
for(Integer i = 1; i < 10; ++i){
    myMap.put('someKey' + String.valueOf(i),Math.floor(Math.random() * 1000));
}
System.debug(myMap);
System.debug(myMap.get('someKey7'));

此示例中的“双精度”可以同样是 Integer、Id、Account、MyCustomClass ......无论您的函数返回什么。

如果您的数据来自外部来源,我还能想到另一个技巧可能会有所帮助。它使用 JSON / XML 解析器,可以将任何类型的数据(保存在字符串中)转换为您选择的集合。它有点回到 List/Map 的想法,但完全取决于你如何事先构建/检索这个字符串。首先阅读JSON 方法,但如果您没有遵循可预测模式的结构,您可能需要查看 JSON/XML 解析器(单击此处并向下滚动到示例)。

于 2013-04-25T18:19:52.660 回答
1

这在顶点是不可能的。但是,您可以使用列表:

List<String> values = new List<String>();

for (Integer i = 0; i < aList.size(); i++) {
    values.add(dosomething(i));
}
于 2013-04-25T17:28:24.570 回答