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 呼び出しのシン ラッパーのようなものです。

好奇心から - なぜそれが必要なのですか?

シーケンシャルアクセスが必要な場合は、ループでジェレミーのアイデアを使用してください。または...

「一意のキー -> 何らかの値」が必要な場合は、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'));

この例の "double" は、Integer、Id、Account、MyCustomClass など、関数が返すものと同じです。

データが外部ソースからのものである場合に役立つと思われるもう 1 つのトリックがあります。任意の種類のデータ (文字列に保持されている) を選択したコレクションにキャストできる JSON / XML パーサーを使用することです。リスト/マップのアイデアに戻りますが、事前にこの文字列をどのように構築/取得するかは完全にあなた次第です。最初に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 に答える