List (リスト) Object とインデックスの開始値


List Object のインデックスは デフォルトだと 1 から始まる.

icons_List_object_cf2.5_extension_mmf2

リスト ( List ) / エクステンション

Extension 毎にインデックスの開始が 1 だったり 0 だったりするため分かりにくいが、これはエクステンションのプロパティから設定を変更可能なエクステンションもある。List Object がまさにそれ、設定から変更できる。

cf2.5_list_object_properties_1_based_index_settings

インデックスの開始値を 0 にするか 1 にするかは言語でも異なるけど、普通は 0 から始まるものが多いはず。学術研究用途だと本来存在しないことを表す 0 をインデックスの開始値にすることを嫌うとか聞いたことがある。本当かどうかは知らないがスクリプト言語である Lua がループインデックスは通常 1 から返す仕様になってる。

a={100,200,300};
for i,v in ipairs(a) do print(i,v) end;

この結果が

1, 100
2, 200
3, 300

となり、または

a = {100, 200, 300};
=a[0], a[1];
nil, 100

インデックスの開始が 0 ではなく 1 になっているのが分かる。これは言語によってインデックスの始値は違うよというお話し。

例外を除けば通常インデックスは 0 から始まる.

CF2.5 の場合も同じように基本動作はインデックス 0 から始まる。しかし例外もある。

たとえば fastloop (高速ループ) だとインデックスの開始は 0 だし変数のインデックス指定も開始は 0 。

全てのエクステンションを含めインデックスの開始がデフォルトで 0 の方が合理的ではあるはず、だが実際には CF2.5 自体がフレームのインデックス開始には 1 を採用していたりするし、「リスト」のように標準機能的なエクステンションでもインデックスのデフォルトが 1 だったりする、厳密な統一性は残念ながら無い。


Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です