1

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\\\;\;;

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

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

提前致谢。

4

1 回答 1

1

在大多数编程语言中,数组非常高效,并且旨在尽可能快地运行。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
于 2017-04-03T01:00:47.630 回答