如何只创建一次常量

时间:2019-07-04 22:21:59

标签: scala macros scala-macros

编写宏将bytes"hello"转换为

是微不足道的

"hello".getBytesArray('h'.getByte, 'o'.getByte, 'l'.getByte, 'l'.getByte, 'o'.getByte)

这里的问题是我们没有得到常量字面量,即 "hello" eq "hello"不适用于由宏bytes"hello" ne bytes"hello"构造的值。由于字节数组被不必要地构造多次,因此也存在性能缺陷。

实际上bytes"hello"必须转换的是一个全局范围对象:

object `bytes"hello"` {
  val value = Array('h'.getByte, 'o'.getByte, 'l'.getByte, 'l'.getByte, 'o'.getByte)
}

但是似乎在当前状态下,Scala宏不允许创建全局对象。 我错了吗,在当前的Scala中这是可行的吗?

0 个答案:

没有答案