scala で 1 つ (または 2 つ、見方によって異なります) の演算子を定義したいと考えています。
このようなもの: _ ==> _ | _ アンダースコアは引数を表します。注意が必要なのは、オブジェクトのフィールドを設定するためにコンストラクターで演算子を使用する必要があることです。
Implicit とラッパー オブジェクトを使用して、小さな例を書きました。しかし、そのアプローチは明らかに機能しません。現在のオブジェクトのフィールドを設定する方法がわかりません。
この例では、タイプ B からのすべての作成オブジェクトは、そのフィールドを「B」、44、および「foo」に設定する必要があります。「B」の結果 ==> 44 | "foo" は this.a = "B"; と同じでなければなりません。これ.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)
}
}