Sortコマンド
※SRC本家HPのバグ報告掲示板に報告済み
前日にあれこれと騒いでいた現象は、Sortコマンドのバグによるものでした。
とりあえず以下にサンプル。
Array["Love to Peace"] = "Love to Peace" Array["Love and Peace"] = "Love and Peace" Array["Love or Peace"] = "Love or Peace" Array["Love = Peace"] = "Love = Peace" Array["Love & Peace"] = "Love & Peace" Array["Love <> Peace"] = "Love <> Peace" # Array["Love + Peace"] = "Love + Peace" # Array["Love - Peace"] = "Love - Peace" # Array["Love * Peace"] = "Love * Peace" # Array["Love / Peace"] = "Love / Peace" # Array["Love \ Peace"] = "Love \ Peace" # Array["Love Mod Peace"] = "Love Mod Peace" Sort Array ForEach index In Array talk Array[$(index)] = $(Array[index]) end Next
式となりうる文字列を配列のインデックスにすると、Sortコマンドで配列をソートする際に、その文字列を式として評価したものが、ソート段階で配列に加えられているようです。
例えば、
Array["Love & Peace"] = "Love & Peace"
という、要素を1つだけ持った配列でも、Sortコマンドによるソートを行うと、
Array["Love & Peace"] = "Love & Peace" Array["LovePeace"] = "Love & Peace"
のような2つの要素を持つ配列になってしまいます。
サンプルではコメントアウトしてありますが、インデックスに算術演算子が入っている配列をソートしようとすると、「不正なコマンドです」と表示されます。
SRCのソースを覗いてみましたが、Sortコマンドは複雑な作りになっていて、VBを知らない僕には、なんとも解読が困難なものになってました。自分でソート用の関数作るしかないのか…。
まあそういうわけで、Sortコマンドを使うときはご注意を。