shapeless 2.3.3LabelledGeneric
在以下case类上运行时返回一个奇怪的结果:
scala> case class Foo(`$eq`: Int)
defined class Foo
scala> LabelledGeneric[Foo]
res0: shapeless.LabelledGeneric[Foo]{type Repr = Int with shapeless.labelled.KeyTag[Symbol with shapeless.tag.Tagged[String("=")],Int] :: shapeless.HNil} = shapeless.LabelledGeneric$$anon$1@1ac7dbd3
注意,返回的标签字面上是
=
而不是$eq
。这种行为是一种畸形的怪癖还是别的什么?是否还有其他导致怪异行为的标识符名称?
我需要这个来进行MongoDB序列化,这对我来说是个大麻烦…
最佳答案
根据阿列克谢在Q中的评论,这是一个无形状的“特征”,因为Scala/Java互操作的方式。后者在Daniel Spiewak's blot post中的“操作员和超载”下解释。
每个博客中受此影响的运营商列表为:
op Compiles To
= $eq
> $greater
< $less
+ $plus
- $minus
* $times
/ div
! $bang
@ $at
# $hash
% $percent
^ $up
& $amp
~ $tilde
? $qmark
| $bar
\ $bslash
: $colon