2017-04-26 69 views
-2

在嵌套的数组中,将用作网格有一个easir 检查天气的方法上下的地方都是空的或者是唯一的方法if,elsif声明嵌套数组中的索引Ruby

   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 
+0

发布的代码不完整。您还必须小心不要传递数组边界。如果'j == 0','j-1'在数组外。 – axiac

回答

0

也不轻松,但一个更清洁的方式来做到这一点是使一些布尔检查方法,如

高清向上?向下高清?它封装了你在if/elsif中检查的所有逻辑。

喜欢的东西:

if down? 
do the thing 
etc.. 

您也可以尝试使用一个case语句。

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] ] 

那么这每次呼叫都会回收结构。