gpt4 book ai didi

scala - 如何将函数编写为二元运算符?

转载 作者:行者123 更新时间:2023-12-03 08:55:22 25 4
gpt4 key购买 nike

在我的 Scala 程序中,我有一个数据类型 Foo,我想为其编写一个二元运算符 >>

这是一些示例代码。

class Foo {}

object BinaryOps {
def >>(f1: Foo, f2: Foo): Foo = ???

def main(args: Array[String]): Unit = {
val f1 = new Foo()
val f2 = new Foo()
// val f3 = f1 >> f2 // Error: cannot resolve symbol >>
val f4 = >>(f1, f2) // works, but I want the binary op syntax.

// val f5 = f1 >> f2 >> f3 >> f4 // ultimate goal is to be able to chain calls.
}
}

到目前为止,我的 IDE 表明它无法解析符号 >>,也就是说,编译器不会尝试将其用作二元运算符。

如何更改它以便找到该符号并可以将其用作二元运算符?

编辑:如果 Foo 无法更改怎么办?如果可以的话怎么办?

最佳答案

形式f1 >> f2实际上意味着f1.>>(f2),这意味着Foo应该有这样的方法。

class Foo {
def >>(that :Foo) :Foo = ???
...

如果Foo无法修改,您可以创建隐式转换。

implicit class FooOps(thisfoo :Foo) {
def >>(thatfoo :Foo) :Foo = ???
}

现在 f1 >> f2 应该可以工作。

关于scala - 如何将函数编写为二元运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55868829/

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