有没有办法在Ruby中测试3 <n <10

che*_*ell 0 ruby operators

在ruby中有一种方法可以做到以下几点

20.times do |n|
  if 3 < n < 10
    id = 40555
  end
end
Run Code Online (Sandbox Code Playgroud)

Mar*_*mas 10

您可以使用两个比较:

if 3 < n && n < 10
Run Code Online (Sandbox Code Playgroud)

或者您可以使用between:

if n.between? 3, 10
Run Code Online (Sandbox Code Playgroud)

或者您可以使用范围和cover?(1.9)或include?(1.8)方法:

if (3..10).cover? n
Run Code Online (Sandbox Code Playgroud)

请注意,最后两个包括端点.但是,范围可以选择性地排除其端点.

顺便说一句,在代码审查中,我将"魔术数字"标记为3和10,因为需要将其重构为适当命名的自我记录方法,类似于if within_tolerance?(n)或类似.


ste*_*lag 6

n.between?(3, 10)
Run Code Online (Sandbox Code Playgroud)

(感谢简陋的Comparable模块)