gpt4 book ai didi

rust - Rust 是否支持将中缀运算符用作函数?

转载 作者:行者123 更新时间:2023-11-29 07:47:06 25 4
gpt4 key购买 nike

我正在编写一个对两个数组进行分段乘法的函数。

    xs.iter()
.zip(ys).map(|(x, y)| x * y)
.sum()

在其他一些语言中,我可以将 (*) 作为函数传递给 map。 Rust 有这个功能吗?

最佳答案

嗯嗯是的。有点不太对。

您不能将运算符写成名称。但是大多数运算符都有特性支持,您可以写出它们的名称,所以 a * b 实际上是 Mul::mul(a, b),您可以将 Mul::mul 作为函数指针传递。

但这在这种情况下没有帮助,因为 Iterator::map 需要一个 FnMut((A, B)) -> C 和二元运算符全部实现 FnMut(A, B) -> C

现在,您可以为此编写一个适配器,但您需要为每一个参数性和可变性的组合编写一个适配器。 并且您必须吃掉堆分配和间接寻址或者需要夜间编译器。

或者,您可以在一个扩展特征上编写您自己的 Iterator::map 版本,该特征接受元组迭代器的更高元数函数……同样,每个元数一个……

老实说,使用闭包更简单。

关于rust - Rust 是否支持将中缀运算符用作函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44519975/

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