Ruby-Nice链接大量OR语句的方法?(检查数组越界)

Mir*_*318 7 ruby conditional

我正在做一个编码难题,你是一个阵列中的矿工,你不能超出界限.我有这个代码:

if x > minemap.length-1 or x < 0 or y > minemap[0].length-1 or y < 0
  return false
end
Run Code Online (Sandbox Code Playgroud)

链接大量OR语句是否有更好/更清洁/单行的方式?

Mic*_*ohl 6

首先,使用orand过度||以及&&在条件不红宝石成语,因为它们具有不同的优先级,并可能不会总是做你想做的(风格指南参考).至于实际的问题,像这样的东西是更惯用的Ruby:

(0...minemap.length).cover?(x) && (0...minemap[0].length).cover?(y)
Run Code Online (Sandbox Code Playgroud)

这使用Range#cover?检查x并且y在正确的范围内并返回,false除非这是真的.