Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 根据字段类型,无形状泛型和case类toArray异常_Scala_Shapeless - Fatal编程技术网

Scala 根据字段类型,无形状泛型和case类toArray异常

Scala 根据字段类型,无形状泛型和case类toArray异常,scala,shapeless,Scala,Shapeless,我遇到了以下令人费解的行为 (Scala 2.10.4无形状2.0) 这两种方法都如我所希望的那样有效,但当我有一个具有以下字段布局的案例类时 case class SL3(a: String, b: String, c: Long) val sl3Gen = Generic[SL3] val sl3 = sl3Gen.to(SL3("A","B",1L)).map(TypeMapper).toArray 代码以 java.lang.ArrayIndexOutOfBoundsException

我遇到了以下令人费解的行为 (Scala 2.10.4无形状2.0)

这两种方法都如我所希望的那样有效,但当我有一个具有以下字段布局的案例类时

case class SL3(a: String, b: String, c: Long)
val sl3Gen = Generic[SL3]
val sl3 = sl3Gen.to(SL3("A","B",1L)).map(TypeMapper).toArray
代码以

java.lang.ArrayIndexOutOfBoundsException: 1
    at shapeless.ops.hlist$LowPriorityToArray$$anon$103.loop$2(hlists.scala:595)
    at shapeless.ops.hlist$LowPriorityToArray$$anon$103.apply(hlists.scala:598)
    at shapeless.ops.hlist$LowPriorityToArray$$anon$103.apply(hlists.scala:589)
    at shapeless.syntax.HListOps.toArray(hlists.scala:439)
    at .<init>(<console>:17)
    at .<clinit>(<console>)
    at .<init>(<console>:7)
    at .<clinit>(<console>)
    at $print(<console>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:734)
    at scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:983)
    at scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:573)
    at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:604)
    at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:568)
    at scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:760)
    at scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:805)
    at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:717)
    at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:581)
    at scala.tools.nsc.interpreter.ILoop.innerLoop$1(ILoop.scala:588)
    at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:591)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:882)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837)
    at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)
    at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:837)
    at scala.tools.nsc.interpreter.ILoop.main(ILoop.scala:904)
    at xsbt.ConsoleInterface.run(ConsoleInterface.scala:69)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:102)
    at sbt.compiler.AnalyzingCompiler.console(AnalyzingCompiler.scala:77)
    at sbt.Console.sbt$Console$$console0$1(Console.scala:23)
    at sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply$mcV$sp(Console.scala:24)
    at sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply(Console.scala:24)
    at sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply(Console.scala:24)
    at sbt.Logger$$anon$4.apply(Logger.scala:90)
    at sbt.TrapExit$App.run(TrapExit.scala:244)
    at java.lang.Thread.run(Thread.java:744)
java.lang.ArrayIndexOutOfBoundsException:1
在shapeless.ops.hlist$LowPriorityToArray$$anon$103.loop$2(hlists.scala:595)
在shapeless.ops.hlist$LowPriorityToArray$$anon$103.apply(hlists.scala:598)
在shapeless.ops.hlist$LowPriorityToArray$$anon$103.apply(hlists.scala:589)
at shapess.syntax.HListOps.toArray(hlists.scala:439)
在。(:17)
在
在。(:7)
在
$print()
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
在scala.tools.nsc.explorer.IMain$ReadEvalPrint.call中(IMain.scala:734)
位于scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:983)
位于scala.tools.nsc.explorer.IMain.loadAndRunReq$1(IMain.scala:573)
在scala.tools.nsc.explorer.IMain.explore(IMain.scala:604)中
在scala.tools.nsc.explorer.IMain.explore(IMain.scala:568)中
在scala.tools.nsc.interpreter.ILoop.reallyexploration$1(ILoop.scala:760)
位于scala.tools.nsc.interpreter.ILoop.interpretatingstartingwith(ILoop.scala:805)
位于scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:717)
位于scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:581)
位于scala.tools.nsc.explorer.ILoop.innerLoop$1(ILoop.scala:588)
位于scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:591)
在scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:882)
在scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837)中
在scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837)中
位于scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)
位于scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:837)
位于scala.tools.nsc.interpreter.ILoop.main(ILoop.scala:904)
在xsbt.ConsoleInterface.run处(ConsoleInterface.scala:69)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
在sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:102)中
在sbt.compiler.AnalyzingCompiler.console(AnalyzingCompiler.scala:77)
在sbt.Console.sbt$Console$$console0$1(Console.scala:23)
在sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply$mcV$sp(Console.scala:24)
在sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply(Console.scala:24)
在sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply(Console.scala:24)
在sbt.Logger$$anon$4.apply(Logger.scala:90)
在sbt.TrapExit$App.run(TrapExit.scala:244)
运行(Thread.java:744)

有人能解释为什么会发生这种情况,以及(希望)如何避免这种情况吗?

这是2.1.0-SNAPSHOT中修复的Shapess 2.0.0中的一个bug。Github问题。

在这里问这个问题完全可以,但对我来说,它看起来像是一个bug报告,在这种情况下,它应该(也)在不成形的Github问题跟踪程序中。
java.lang.ArrayIndexOutOfBoundsException: 1
    at shapeless.ops.hlist$LowPriorityToArray$$anon$103.loop$2(hlists.scala:595)
    at shapeless.ops.hlist$LowPriorityToArray$$anon$103.apply(hlists.scala:598)
    at shapeless.ops.hlist$LowPriorityToArray$$anon$103.apply(hlists.scala:589)
    at shapeless.syntax.HListOps.toArray(hlists.scala:439)
    at .<init>(<console>:17)
    at .<clinit>(<console>)
    at .<init>(<console>:7)
    at .<clinit>(<console>)
    at $print(<console>)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.call(IMain.scala:734)
    at scala.tools.nsc.interpreter.IMain$Request.loadAndRun(IMain.scala:983)
    at scala.tools.nsc.interpreter.IMain.loadAndRunReq$1(IMain.scala:573)
    at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:604)
    at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:568)
    at scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:760)
    at scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:805)
    at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:717)
    at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:581)
    at scala.tools.nsc.interpreter.ILoop.innerLoop$1(ILoop.scala:588)
    at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:591)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:882)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837)
    at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:837)
    at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:135)
    at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:837)
    at scala.tools.nsc.interpreter.ILoop.main(ILoop.scala:904)
    at xsbt.ConsoleInterface.run(ConsoleInterface.scala:69)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:102)
    at sbt.compiler.AnalyzingCompiler.console(AnalyzingCompiler.scala:77)
    at sbt.Console.sbt$Console$$console0$1(Console.scala:23)
    at sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply$mcV$sp(Console.scala:24)
    at sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply(Console.scala:24)
    at sbt.Console$$anonfun$apply$2$$anonfun$apply$1.apply(Console.scala:24)
    at sbt.Logger$$anon$4.apply(Logger.scala:90)
    at sbt.TrapExit$App.run(TrapExit.scala:244)
    at java.lang.Thread.run(Thread.java:744)