- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
4.2 b -> 0 c -6ren">
给定:
let a = 4.2
let b = -1.3
let c = 6.4
我想知道将这些值限制在给定范围内的最简单、最快捷的方法,比如 0...5
,这样:
a -> 4.2
b -> 0
c -> 5
我知道我可以做到以下几点:
let clamped = min(max(a, 0), 5)
或者类似的东西:
let clamped = (a < 0) ? 0 : ((a > 5) ? 5 : a)
但我想知道在 Swift 中是否还有其他方法可以做到这一点——特别是,我想知道(并记录在案,因为在 Swift 中似乎没有关于限制数字的问题)是否有是 Swift 标准库中专门用于此目的的任何内容。
可能没有,如果有,这也是我很乐意接受的答案。
最佳答案
swift 4/5
Comparable/Strideable
的扩展类似于标准 Swift 库中的 ClosedRange.clamped(to:_) -> ClosedRange
。
extension Comparable {
func clamped(to limits: ClosedRange<Self>) -> Self {
return min(max(self, limits.lowerBound), limits.upperBound)
}
}
#if swift(<5.1)
extension Strideable where Stride: SignedInteger {
func clamped(to limits: CountableClosedRange<Self>) -> Self {
return min(max(self, limits.lowerBound), limits.upperBound)
}
}
#endif
用法:
15.clamped(to: 0...10) // returns 10
3.0.clamped(to: 0.0...10.0) // returns 3.0
"a".clamped(to: "g"..."y") // returns "g"
// this also works (thanks to Strideable extension)
let range: CountableClosedRange<Int> = 0...10
15.clamped(to: range) // returns 10
关于swift - "clamp"Swift 中两个值之间的数字的标准方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36110620/
Julia 有 two methods for limiting variables to ranges of numbers : clamp 和 clamp!。使用点表示法,clamp. 也可以用于
我正在使用 Rust 和 WebAssembly 操作像素数据,并且正在努力使用操作的像素创建新的 ImageData。 当我得到我的 ImageData 时的数据,它返回 Clamped> f
我访问了这个问题的问题: Android SAX parser not getting full text from between tags因为我有类似的问题。我用这一侧的一项陈述解决了我的问题,但
我在开发的游戏中使用 Mathhelper.Clamp 时遇到了问题。这是导致我出现问题的代码片段: if (background.position.Y == 0) { player.posi
我正在放大一个元素并尝试更改 -webkit-line-clamp。它的工作原理是它在更改后显示了正确的行数,但它不起作用的原因是省略号和链接(在文本之后)没有移动到(新)末尾。 查看CodePen
我想对二维数组上的 PyTorch 张量执行类似于 np.clip 的操作。更具体地说,我想将每一列剪裁在特定的值范围内(依赖于列)。例如,在 numpy 中,你可以这样做: x = np.array
我正在编写一个表示 LED 的类。 r、g 和 b 的基本 3 个 uint 值在 0 到 255 范围内。 我是 C# 的新手,从 uint1 开始,它比我想要的 8 位大。在编写自己的 Clamp
给定: let a = 4.2 let b = -1.3 let c = 6.4 我想知道将这些值限制在给定范围内的最简单、最快捷的方法,比如 0...5,这样: a -> 4.2 b -> 0 c
我很想使用 CSS 中的 clamp 函数实现流畅的字母间距。但是因为我喜欢我的字母间距很紧,所以我需要在公式中包含三个负值,并且现在尝试了几个小时来弄清楚这个。我是否必须切换最小值和最大值,因为它们
我正在使用 -webkit-line-clamp 属性来在 Chrome 上实现多行省略号。我们已经适本地设置了高度和最大高度,以便我们看到准确的 N 行和正确的省略号。但是,一旦我们在浏览器中放大或
我正在开发一个在 z 轴上旋转对象的游戏。我需要将总旋转限制为 80 度。我尝试了以下代码,但它不起作用。 minAngle = -40.0f 和 maxAngle = 40.0f Vector3 p
给定 1 到 16 之间的精度 p,我想将 AVX2 整数寄存器限制在 -p/2 和 p/2 之间>。我目前使用 std::clamp 对非 AVX2 整数执行此操作。 有没有办法用 AVX2 做到这
给定 1 到 16 之间的精度 p,我想将 AVX2 整数寄存器限制在 -p/2 和 p/2 之间>。我目前使用 std::clamp 对非 AVX2 整数执行此操作。 有没有办法用 AVX2 做到这
我在它们之间显式转换了类型,但错误仍然存在 var destX:CGFloat = 5.0 func clamp(value: CGFloat, min: CGFloat, max: CGFl
我有一个 Vector2 变量,其中 vector.x 和 vector.y 已被限制,因此两者都只允许有 0 到 4 之间的值。显然,这使我在坐标 2 周围有一个二次空间,2 到移动游戏对象。但我想
VS2015 不会编译我的代码,说命名空间“std”没有成员“clamp”,尽管 intellisense 可以很好地识别它并告诉我参数和返回值。是的,我已经包含了标题。 #include #inc
我在 PHP 中编写了一个函数来“钳制”数字,但我想知道该函数是否在该语言中原生存在。 我在数学部分阅读了 PHP.net 文档,但找不到。 基本上我的函数所做的是它接受一个变量、一个可能值的数组和一
我正在尝试制作一个可重用的 React text-clamp 组件。用户传入要呈现的行数和他们想要显示的文本,然后组件呈现他们的文本,在指定的行数处将其 chop 并在末尾插入省略号 (...)。 我
为什么 -webkit-line-clamp 没有使用 text-align:justify 显示正确的省略号。它与 text-align:left/right 一起工作良好。 请提出任何技巧。 di
我有链接 some really long text 和这个 CSS .module { width: 250px; overflow: hidden; } .line-clamp
我是一名优秀的程序员,十分优秀!