0

の出力をArray.toString()ユーザーに表示しても問題ありませんか?それとも、ActionScript 3 または他のコンパイラの将来のバージョンで文字列形式が変更される可能性はありますか?

4

3 に答える 3

6

ECMA-262から Array.toString を説明する抜粋を次に示します。ActionScript 3 はこれに非常に厳密に従っています。

15.4.4.2

Array.prototype.toString ( ) toString メソッドが呼び出されると、次の手順が実行されます
。 1. this 値で ToObject を呼び出した結果を配列とします。
2. func を引数「join」で配列の [[Get]] 内部メソッドを呼び出した結果とする。
3. IsCallable(func) が false の場合、func を標準の組み込みメソッド Object.prototype.toString (15.2.4.2) にします。
4. func の [[Call]] 内部メソッドを呼び出した結果を this 値と空の引数リストとして返します。

そして Array.join:

15.4.4.5

Array.prototype.join (separator) 配列の要素が文字列に変換され、これらの文字列が連結され、セパレータの発生によって区切られます。セパレーターが指定されていない場合、単一のコンマがセパレーターとして使用されます。join メソッドは、separator という 1 つの引数を取り、次の手順を実行します。
1. ToObject を呼び出し、引数として this 値を渡した結果を O とします。
2. lenVal が、O の [[Get]] 内部メソッドを引数 "length" で呼び出した結果であるとします。
3. len を ToUint32(lenVal) とします。
4. 区切り文字が定義されていない場合、区切り文字は単一文字の文字列 "," とします。
5. sep を ToString(separator) とします。
6. len がゼロの場合、空の文字列を返します。
7. element0 を引数「0」で O の [[Get]] 内部メソッドを呼び出した結果とする。
8. element0 が未定義または null の場合、R を空の文字列とします。それ以外の場合は、R を ToString(element0) とします。
9. k を 1 とします
。 10. k < len
a の間、繰り返します。R と sep を連結して生成される文字列値を S とします。
b. element を引数 ToString(k) で O の [[Get]] 内部メソッドを呼び出した結果とする。
c. 要素が未定義または null の場合、次を空の文字列にします。それ以外の場合は、次を ToString(element) とします。
d. S と next を連結して生成される文字列値を R とします。
e. k を 1 増やします
。 11. R を返し ます。

したがって、デフォルトの動作は非常に明確に定義されており、変更されません。

于 2011-07-13T21:27:21.723 に答える
1

そのまま使用しても安全です。Array.toString()AS3が出てからずっと同じです。

于 2011-07-13T16:19:50.743 に答える
0

の戻り値Array.toString()は、これで。の戻り値と等しくなりArray.join()ます。

この振る舞いが変わらないことを心配している場合は、明示的に使用してくださいArray.join()(または、完全に衒学的であるためにArray.join(','))。そうすれば、安全になります。配列への参加はActionScriptが存在するためこのように機能し、Adobeが何かを変更して下位互換性(そして、まあ、正気)を失う可能性はほとんどありません。

于 2011-07-13T20:03:49.867 に答える