动态声明新变量?

时间:2013-04-25 16:46:58

标签: salesforce apex-code visualforce force.com

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

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

val1
val2
val3
val4...

有没有办法动态创建这些东西,比如......

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

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

2 个答案:

答案 0 :(得分:1)

这在顶点是不可能的。但是你可以使用一个列表:

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

for (Integer i = 0; i < aList.size(); i++) {
    values.add(dosomething(i));
}

答案 1 :(得分:1)

Apex是一种已编译但未解析/动态的语言。你可以用Javascript或PHP来解决这个问题但是(据我所知)不是用Java。当你深究它时 - Salesforce建立在Oracle数据库和Java之上,因此Apex对于他们认为最有必要的Java调用是一种很薄的包装。

出于好奇 - 你为什么需要那个?

如果您需要顺序访问,请使用Jeremy的循环创意。还是......

如果您需要“唯一键 - >某些值”,请使用地图。

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'));

此示例中的“double”可以是Integer,Id,Account,MyCustomClass ......无论函数返回什么。

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