包含 `$eq` 的标记通用
Labelled Generic containing `$eq`
Shapeless 2.3.3 LabelledGeneric
returns 当 运行 在以下情况 class:
时的奇怪结果
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@1ac7dbd3
注意返回的标签字面意思是 =
而不是 $eq
。
这种行为是无形的怪癖还是其他什么?是否有其他标识符名称会导致奇怪的行为?
我需要这个 MongoDB 序列化,这让我很头疼...
根据 Alexey 在 Q 中的评论,由于 scala/java 互操作的工作方式,这是 Shapeless 中的 'feature'。后者在 "operators and overaloading" 下的 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
Shapeless 2.3.3 LabelledGeneric
returns 当 运行 在以下情况 class:
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@1ac7dbd3
注意返回的标签字面意思是 =
而不是 $eq
。
这种行为是无形的怪癖还是其他什么?是否有其他标识符名称会导致奇怪的行为?
我需要这个 MongoDB 序列化,这让我很头疼...
根据 Alexey 在 Q 中的评论,由于 scala/java 互操作的工作方式,这是 Shapeless 中的 'feature'。后者在 "operators and overaloading" 下的 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