在大多数编程语言中,数组非常高效,并且旨在尽可能快地运行。Small Basic 并非如此。实际上,Small Basic 严格来说没有数组结构。数组存储为 Map,其中键与其匹配的值成对存储。
你通常这样使用数组:ary[1] = 12
但是您可以像这样轻松地使用它:ary["cat"] = 12
Small Basic 的第一个版本甚至不支持方括号 [] 表示法。您使用 Map 对象将列表存储在信息中。为了向后兼容, Map 对象仍然存在。对它的访问已被包裹在一些语法糖中,以使其更加传统。最终结果是非常灵活,但非常缓慢。
现在,回答你的实际问题......
当您写出一个数组时,您看到的是数组的 Map 存储。这些值是成对的。映射键、等号和关联的映射值,以分号结尾。当你做多维数组时,这个想法是嵌套的。对于二维数组,您将获得第一个索引、一个等号、第二个索引、斜线、第二个等号,然后是关联的值。对于每个添加的索引,您都会得到另一个斜杠和另一个分号。当您使用非数字索引时,这更容易看到。
a["cat"] = "hat"
a["shark"] = "bait"
TextWindow.WriteLine(a) 'cat=hat;shark=bait;
b["apple"]["orange"] = "fruit"
b["VW"]["BMW"] = "cars"
TextWindow.WriteLine(b) 'apple=orange\=fruit\;;VW=BMW\=cars\;;
c["hot"]["medium"]["cold"] = "temps"
c["cheese"]["meat"]["vegies"] = "food"
TextWindow.WriteLine(c) 'hot=medium\=cold\\\=temps\\\;\;;cheese=meat\=vegies\\\=food\\\;\;;
这个想法可以反过来。如果您想让代码尽可能紧凑,可以使用字符串加载数组。只需遵循上面详述的模式,而不是使用六个不同的行将六个值加载到六个索引中,您可以在一行上一次完成所有操作:
d = "work=money;stone=cold;"
TextWindow.WriteLine(d["work"]) 'money
TextWindow.WriteLine(d["stone"]) 'cold