gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:33:33 24 4
gpt4 key购买 nike

(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?得到 nil 而不是 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

关于ruby - 如何知道一个数字是大于还是小于一个范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65735303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com