-1

私が学ぼうとしているいくつかのコードでは、以下のMaze文字列が配列に変換され(コードは表示されていません)、インスタンス変数@mazeに保存されます。迷路の開始点は、その迷路の文字「A」で表されます。これには、@maze[1][13]---行1、列13でアクセスできます。ただし、私が見ているコードは@maze [1] [13、 1] Aを取得すると、コンソールに同じ結果が返されます。@maze [1] [13,2]を実行すると、横に2つの空白スペースがある文字「A」が返されます。[13,3]は、3つの空白スペースがある「A」を返します。

[13,2]の2は、「[1] [13]で始まる2つの値を返す」という意味ですか?もしそうなら、なぜですか?これは配列の機能なのか、それとも私が得られない2次元配列なのか?

[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]文字列です。2番目[]は文字列に適用されます。そして、String#[]methodの2番目の引数は、取る文字の長さを記述します。1指定しない場合はデフォルトになっていると考えられます。ちなみに、あなたの質問は間違っています。あなたは説明します

@maze [1] [13,2]を実行すると、横に2つの空白スペースがある文字「A」が返されます。

しかし、あなたの例が示しているのは

@maze [1] [13,2]を実行すると、文字「A」が返され、その横に空白が1つ続きます。

于 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 に答える