编写宏将bytes"hello"
转换为
"hello".getBytes
或Array('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中这是可行的吗?