ケース クラスを、各フィールドのレンズを含むシーケンスに変換しようとしています。私が抱えている問題を強調するために、次の単純化された例を作成しました。
次のコードは実行時エラーになります。
import shapeless._
case class Testing(field1: String, field2: Double)
val lenses = Seq(0,1).map(i => lens[Testing] >> i)
一方、次の場合はそうではありません。
import shapeless._
case class Testing(field1: String, field2: Double)
val lens1 = lens[Testing] >> 0
val lens2 = lens[Testing] >> 1
val lenses = Seq(lens1, lens2)
実際のエラーは、「式 i は非負の Int リテラルに評価されません」と表示されます。
コード val lens3 = lens[Testing] >> 2 (つまり、1 つのフィールドへのアクセスが多すぎる) でも同じエラー メッセージが表示されるため、このエラー メッセージは誤解を招くように感じます。
シェイプレスでこのような行動を経験した人はいますか? ケース クラスの各フィールドの要素レンズをシーケンスに抽出する簡単な方法はありますか (つまり、フィールド名を使用して各レンズにアクセスする必要があるモノクルの @lenses とは異なります)。