【发布时间】:2017-11-18 11:08:33
【问题描述】:
我编写了以下代码,它将x 保持在(a..b) 范围内。在伪代码中:
(if x < a, x = a; if x > b, x = b)
在 Ruby 中是这样的:
x = [a, [x, b].min].max
由于它是非常基本且有用的功能,我想知道在 ruby 中是否有本地方法可以做到这一点。
从 Ruby 2.3.3 开始,显然没有这样的方法,那么最短/更易读的方法是什么?
我找到了:
x = [a, x, b].sort[1]
到目前为止,但我不确定它是否更具可读性。
【问题讨论】:
-
只是一个感兴趣的问题,来自完全原生函数?
-
你已经回答了你自己的问题 - 很好地使用了排序功能。我不认为你会比这更易读。
-
您的意思可能是:
x2 = [a, [x, b].min].max。在我看来没问题,使用基本的通用方法来构建其余部分。 -
排序的有趣使用..使整个事情独立于顺序..
-
@tokland:你是对的。我编辑了它