在我的 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
应该工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句