我想定义一个(或两个,取决于您如何看待它)在Scala中的操作员。
类似的东西:_ ==> _ |_下划线代表参数的地方。棘手的部分是,应在构造函数中使用操作员来设置对象的字段。
我写了一个小例子,使用隐式和一个包装对象。但是这种方法显然不起作用。我不知道,如何设置当前对象的字段。
在此示例中,每个类型的创建对象都应将其字段设置为" B",44和" Foo"。" B" ==> 44 |的结果" foo"应该与this.a =" b"相同;this.b = 44;this.c = foo。有办法实现这一目标吗?
谢谢!
abstract class Top {
var a = "a"
var b = 3
var c = "c"
implicit def js2WJ(js: String) : Wrapper = {
new Wrapper(js)
}
}
case class B() extends Top
{
"B" ==> 44 | "foo"
}
class Wrapper(js: String)
{
var ju : Option[Int] = None
var cs : Option[String] = None
def ==>(j: Int): Wrapper = {
ju = Some(j)
this
}
def | (cs: String) =
{
this.cs = Some(cs)
}
}
这是您需要的吗?
abstract class Top {
var a = "a"
var b = 3
var c = "c"
implicit def js2WJ(js: String): TopBuilder = TopBuilder(js, b, c, this)
}
case class TopBuilder(a: String, b: Int, c: String, top: Top) {
def ==> (j: Int) = copy(b = j)
def | (s: String) = copy(c = s) toTop
def toTop {
top.a = a
top.b = b
top.c = c
}
}
object B extends Top {
"B" ==> 44 | "foo"
}