使用 Scala 宏创建伪赋值
Creating pseudo-assignement using Scala macro
我正在尝试对此进行转换:
@Property("test")
private var testOpt: Option[String] = Option.empty
进入
private var testOpt: Option[String] = Option.empty
def test: Option[String] = testOpt
def test_=(value: Option[String]) = testOpt = test
使用此代码:https://hasteb.in/rawulipe.scala
一切正常,除了使用 _=
后缀时,得到
value test_= is not a member of <the class of the testOpt variable>
手动添加此方法时工作正常。有什么想法吗?
替换
val setter = TermName(s"${defName}_=")
和
val setter = TermName(s"${defName}_=").encodedName.toTermName
或
val setter = TermName(s"${defName}_$$eq")
用法:
@Property("test")
private var testOpt: Option[String] = Option.empty
//scalac: {
// private var testOpt: Option[String] = Option.empty;
// def test: Option[String] = testOpt;
// def test_$eq(value: Option[String]): Unit = testOpt = value;
// ()
//}
test = Some("a") // compiles
我正在尝试对此进行转换:
@Property("test")
private var testOpt: Option[String] = Option.empty
进入
private var testOpt: Option[String] = Option.empty
def test: Option[String] = testOpt
def test_=(value: Option[String]) = testOpt = test
使用此代码:https://hasteb.in/rawulipe.scala
一切正常,除了使用 _=
后缀时,得到
value test_= is not a member of <the class of the testOpt variable>
手动添加此方法时工作正常。有什么想法吗?
替换
val setter = TermName(s"${defName}_=")
和
val setter = TermName(s"${defName}_=").encodedName.toTermName
或
val setter = TermName(s"${defName}_$$eq")
用法:
@Property("test")
private var testOpt: Option[String] = Option.empty
//scalac: {
// private var testOpt: Option[String] = Option.empty;
// def test: Option[String] = testOpt;
// def test_$eq(value: Option[String]): Unit = testOpt = value;
// ()
//}
test = Some("a") // compiles