我正在尝试为我的游戏编写一个关卡生成器,因此我正在 Swift Playground 中对其进行测试。我的关卡存储在 2D Swift 数组中。除了我无法以有用的方式查看数组数据之外,一切都很棒。因为它是平铺游戏中的关卡数据,所以我希望看到行和列排列整齐。但是,该数组目前只是根据控制台大小调整大小的单行。如何才能看到行和列整齐排列? 这是我当前的输出:
[[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", " ", "&", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", "&", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]]
通过调整控制台大小,我可以得到一个不错的结果,但必须有更好的方法来做到这一点。
最佳答案
如果您想在控制台中显示其内容对齐的二维数组,我的建议是使保存数组的类符合CustomStringConvertible
协议(protocol)。
为此,您必须创建一个 description
计算属性,这是我们进行格式化的地方:我们将内部数组转换为字符串,并使用行分隔符将它们连接起来。
遵守协议(protocol)使得对象在打印时输出计算属性的结果。
示例:
class BigArrayRepresenter: CustomStringConvertible {
var bigArray: [[String]] = []
init(bigArray: [[String]]) {
self.bigArray = bigArray
}
var description: String {
return bigArray.map { String($0) }.joinWithSeparator("\n")
}
}
使用你的数组:
let source = [[" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", " ", "&", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", "&", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", "&", "&", "&", "&", "&", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", " ", "&", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", "&", "&", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]]
let representer = BigArrayRepresenter(bigArray: source)
print(representer)
我们得到这个结果:
关于arrays - Swift Playground 中的 2D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36287694/