2013-04 / 配列のインデックスに 小数を入れるとどうなるか
研究の実装最中に、配列に関して少しトリッキーな技を使えないかなと、こんなことを考えてた。
例
この時、 box[num]
のとる値は何になるか。
num
は小数値をとっているので box[0.1]
とか、box[1.8]
とか、そんなことになるのだが。
回答
どうやら言語によって答えが変わるらしい。
PHP
Number型がintに自動的に切り詰められるので、1未満は0, 1以上2未満は1として扱われて動作する。 このへんPHPは相当親切だなぁと実感。
ちなみにPerlでも似たような挙動を示すらしい。
Perl の配列のインデックスに小数を使うと - BitWalker
ActionScript・JavaScript
num=0
は当然動くが、1で
jsでは、
いわゆる「そんなもんねーよ」のエラー。ブチッと止まる。 一番無難な、融通の効かない感じの反応になる。
だが両言語とも、配列は連想配列としても定義できるため、
なんて指定をしていた場合、0.1がStringとして認識されるので、ちゃんと”c”と出て動いてしまう。
undefined
はその意味で「指定していない」ということとも取れるけど、どうなんだろね。
結論
素直にIf使いましょう
しかしLLはフリーダムだなー(‘A`) 気が効きすぎててどこかでポカしてることあるから逆に神経使いたくなる…。