访问字符串中的值

时间:2012-11-18 04:47:14

标签: ruby

在我试图学习的一些代码中,下面的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]开始的两个值?如果是这样,为什么?这是数组或二维数组的某些特征,我不知道?< / p>

[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# # # #   # #
# # ##### ##### # # ### # # ####### #
# #     # #   # # #   # # # #       #
# ### ### # # # # ##### # # # ##### #
#   #       #   #       #     #     #
#####################################}

2 个答案:

答案 0 :(得分:1)

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

  

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

但你的例子显示的是

  

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

答案 1 :(得分: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
相关问题