次のように私は2つのレコードをマージした場合:なぜシェイプレスなレコードをオプションとマージできないのでしょうか?
case object Key
val a = (Key ->> Option.empty[String]) :: HNil
val b = (Key ->> Option("plif")) :: HNil
val c = a.merge(b)
をその後、我々は、我々はb == c
ことを持って期待通り。しかし、私が代わりにa
ためNone
のプレーンな文字列を使用している場合、これはもはや真実ではありません。この場合c
で
case object Key
val a = (Key ->> "pluf") :: HNil
val b = (Key ->> Option("plif")) :: HNil
val c = a.merge(b)
があることが判明:"pluf" :: Some("plif") :: HNil
とc.keys
はKey :: Key :: HNil
です。何がありますか?
これは何らかの違いがある場合、私はShapeless 2.1を使用しています。