在Small Basic中将数组转换为字符串的规则是什么?

时间:2017-03-10 05:34:02

标签: smallbasic

在Small Basic中将数组转换为字符串的规则是什么?

b[0] = "b0"
b[2] = 1

a[0][0] = "a"
a[0][1] = 123
a[1][2] = "True"
a[1][3] = b

TextWindow.WriteLine(a)
'0=0\=a\;1\=123\;;1=2\=True\;3\=0\\\=b0\\\;2\\\=1\\\;\;;

c[0][0][0] = "a"
c[0][1][0] = 123
c[1][2][0] = "True"
c[1][3][0] = "b0"
c[1][3][2] = 1

TextWindow.WriteLine(c)
'0=0\=0\\\=a\\\;\;1\=0\\\=123\\\;\;;1=2\=0\\\=True\\\;\;3\=0\\\=b0\\\;2\\\=1\\\;\;;

在上面的转换示例中,我不明白何时出现反斜杠。

您能帮我理解转换规则吗?

提前致谢。

G.Kim

1 个答案:

答案 0 :(得分:0)

在大多数编程语言中,数组非常高效,并且设计为尽可能快地运行。 Small Basic不是这种情况。实际上,严格来说,Small Basic没有阵列结构。数组存储为Map,其中键与其匹配值存储为一对。

您通常使用数组:ary [1] = 12

但你可以像这样容易地使用它:ary [“cat”] = 12

Small Basic的第一个版本甚至不支持方括号[]表示法。您使用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