どの言語でも

10 * 3

という式を評価するとたいていは

30

という数値が得られる。
単純に10という数値に3を掛けた結果だ。
この'*'という演算子はRubyやPythonでは文字列に対しても適用できる。
例えば

str = 'ABC'
str * 3

とすれば'ABCABCABC'という文字列を得ることが出来る。
非常にわかりやすいが、これを他の言語で実現するにはどうすればいいか?

Perlでは似た形で同じような機能が提供されている。
具体的には

$str = 'ABC';
$str x 3;

とすればいい。
アスタリスク(*)が英文字の'x'になっただけだがこの場合はx演算子の前後には必ずスペースが必要だ。

$strx3;

こうした時は'$strx3'という変数名を参照した事になってしまう。

PHPでは組み込みの関数で

str_repeat($str, 3);

とすれば同様の結果が得られる。

ではJavascriptではどうだろう。
FireBugでいろいろ試してみたがそれらしいものは見あたらない。
ただし下記のコードで目的は達成できる。

Array(4).join('ABC');

これで同様に'ABCABCABC'という文字列を生成する。 ここで注意しなければいけないのは例えば3回繰り返しを行いたいときは"Arrayコンストラクタには4を渡す"ということだ。

Array(4)を実行した時点では

[undefined, undefined, undefined, undefined]

という配列が出来ている。
この要素一つ一つを空文字と見立てそれらを'ABC'という文字列で連結している。
具体的には

'' + 'ABC' + '' + 'ABC' + '' + 'ABC' + ''

を行っている事と同じなのだ。

カテゴリ:

トラックバック(0)

トラックバックURL: http://blog.beanz-net.jp/beanz_mtos/mt-tb.cgi/41

コメントする