-1

在我试图学习的一些代码中,下面的 Maze 字符串被转换为一个数组(代码未显示)并保存在实例变量 @maze 中。迷宫的起点由迷宫中的字母“A”表示,可以在@maze[1][13]---第 1 行第 13 列访问。但是,我正在查看的代码使用 @maze[1][13, 1] 获取 A,您可以看到它在我的控制台中返回相同的结果。如果我执行@maze[1][13,2],它会返回字母“A”,旁边有两个空格,依此类推。[13,3] 返回带有三个空格的“A”。

[13,2] 中的 2 是否意味着“返回从 [1][13] 开始的两个值?如果是,为什么?这是我没有得到的数组或二维数组的某些特性吗?

[20] pry(#<Maze>):1> @maze[1][13]
=> "A"
[17] pry(#<Maze>):1> @maze[1][13,1]
=> "A"
[18] pry(#<Maze>):1> @maze[1][13,2]
=> "A "
[19] pry(#<Maze>):1> @maze[1][13,3]
=> "A  "

迷宫弦

MAZE1 = %{#####################################
# #   #     #A        #     #       #
# # # # # # ####### # ### # ####### #
# # #   # #         #     # #       #
# ##### # ################# # #######
#     # #       #   #     # #   #   #
##### ##### ### ### # ### # # # # # #
#   #     #   # #   #  B# # # #   # #
# # ##### ##### # # ### # # ####### #
# #     # #   # # #   # # # #       #
# ### ### # # # # ##### # # # ##### #
#   #       #   #       #     #     #
#####################################}
4

2 回答 2

1

从您显示的内容来看,这似乎@maze不是一个二维数组,而是一个字符串数组。@maze[1]是一个字符串。第二个[]应用于字符串。方法的第二个参数String#[]描述了要占用的字符长度。1不指定的时候可以认为是默认的。顺便说一句,你的问题是错误的。你描述

如果我执行@maze[1][13,2],它会返回字母“A”,旁边有两个空格,依此类推。

但你的例子显示的是

如果我执行@maze[1][13,2],它会返回字母“A”,旁边有一个空格,依此类推。

于 2012-11-18T05:23:31.910 回答
0

二维不是问题。这适用于任何数组。

s = ['k', 'i', 't', 't', 'y']
print s[2,3]
=> ["t", "t", "y"]

从文档(http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-5B-5D):

ary[start, length] → new_ary or nil
于 2012-11-18T04:57:21.997 回答