有没有人找到一种方法来动态声明变量?
我有一些可以无限的变量...
val1
val2
val3
val4...
有没有办法动态创建这些东西,比如......
for(loop though){
val + '1' = dosomething('1')
}
我知道它看起来不像上面那样,但希望你能得到它的要点。
答案 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并向下滚动到示例)。