2012-11-18 45 views
-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# # # # # # 
# # ##### ##### # # ### # # ####### # 
# #  # # # # # # # # #  # 
# ### ### # # # # ##### # # # ##### # 
# #  # #  #  #  # 
#####################################} 
+0

雖然我只看到從你的問題的代碼片段,我得到它不是從最好的學習代碼的感覺。 –

回答

1

從大家展示一下,似乎@maze不是一個二維數組,而是一個字符串數組。 @maze[1]是一個字符串。第二個[]應用於一個字符串。方法String#[]的第二個參數描述要採用的字符的長度。您可以考慮在未指定時默認爲1。順便說一下,你的問題是錯誤的。你描述

如果我不@maze [1] [13.2],它返回的字母「A」有兩個空格旁邊,等等。

但你的例子說明

如果我不@maze [1] [13.2],它旁邊返回字母「A」的一個空白吧,等。

0

的2維性不是問題。這適用於任意陣列。

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