如何知道一个数字是大于还是小于一个范围?

(1..2) <=> 3 # => -1
(-2..21) <=> -10 # => 1
(-2..21) <=> 0 # => 0

此功能是否已经有 ruby​​ 实现的方法?否则,我会自己编码。

回答

您可以利用clamp

  3.clamp( 1..2 ) <=>   3  # => -1
-10.clamp(-2..21) <=> -10  # =>  1
  0.clamp(-2..21) <=>   0  # =>  0

一般来说:

number.clamp(range) <=> number

要获得“距离”:(如您的原始问题所述)

number - number.clamp(range)

您可以添加nonzero?到 getnil而不是0

(number - number.clamp(range)).nonzero?

例如:

def distance(range, number)
  (number - number.clamp(range)).nonzero?
end

distance(1..2, 3)     #=> 1
distance(-2..21, -10) #=> -8
distance(1..4, 3)     #=> nil


以上是如何知道一个数字是大于还是小于一个范围?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>