在Ruby中的嵌套数组索引中

时间:2017-04-26 22:22:24

标签: ruby

在将要用作网格的嵌套数组中的

是一个easir 检查天气的方式上面和下面的地方是空的,或者是if,elsif陈述

的唯一方法

             if maze[i][j-1].to_i == index
               maze[i][j-1] = ">"
               #down
             elsif maze[i+1][j].to_i == index
               maze[i+1][j] = ">"
              # UP
            elsif maze[i-1][j].to_i == index
              maze[i-1][j] = ">"
              #right
            elsif  maze[i][j+1].to_i == index
               maze[i][j+1] = ">"
            end

2 个答案:

答案 0 :(得分:0)

不是更容易,但更简洁的方法是制作一些布尔检查方法,如

def up?,def down? etc ..它封装了你在if / elsif中检查的所有逻辑。

类似的东西:

if down?
 do the thing
etc..

您也可以尝试使用案例陈述。

答案 1 :(得分:0)

只需构建一组偏移量并测试匹配项:

hi, hj = [ [-1, 0], [1, 0], [0, 1], [0, -1] ].find do |di, dj|
  maze[i + di][j + dj].to_i == index
end

if (hi && hj)
  maze[i + hi][j + hj] = '>'
end

如果您正在进行大量测试,那么将其定义为内容是有意义的:

UDLR = [ [-1, 0], [1, 0], [0, 1], [0, -1] ]

然后,每次通话都会回收该结构。