[]添え字演算子は、与えられた式を、もしその式に toString メソッドが存在するならそれを使って文字に変換し、その文字列をプロパティ名として利用する。
var list = ["a" , "b" , "c"]; for (v in list) { print(v + " -> " + typeof(v)) } // 0 -> string // 1 -> string // 2 -> string list["0"] //=> "a" list["1"] //=> "b" list["2"] //=> "c"
なんでこういう仕様なんだろう。