Scala隐式参数在无形库中的应用
我是Scala新手,我正在使用无形状库来操作元组。(虽然这并不是特定于Shapess的) 我遇到了一个与隐式参数有关的问题,我不太明白。以下是签名:Scala隐式参数在无形库中的应用,scala,Scala,我是Scala新手,我正在使用无形状库来操作元组。(虽然这并不是特定于Shapess的) 我遇到了一个与隐式参数有关的问题,我不太明白。以下是签名: def reverse(implicit reverse: Reverse[T]): reverse.Out = reverse(t) def drop[N <: Nat](implicit drop: Drop[T, N]): drop.Out = drop(t) 但是,在Scala 2.10上,我遇到了以下错误: 错误:(25,37)找
def reverse(implicit reverse: Reverse[T]): reverse.Out = reverse(t)
def drop[N <: Nat](implicit drop: Drop[T, N]): drop.Out = drop(t)
但是,在Scala 2.10上,我遇到了以下错误:
错误:(25,37)找不到参数reverse的隐式值:
shapeless.ops.tuple.Reverse[(字符串,字符串,字符串)]
val zzy=(“foo”、“bar”、“other”)。相反
错误:(29,37)没有足够的参数用于方法反向:(隐式)
reverse:shapeless.ops.tuple.reverse[(字符串,字符串,
(字符串)])反向输出。未指定值参数反向。
val foo=(“foo”、“bar”、“other”)。相反
我不确定它试图引用的隐式参数是什么,或者我为什么需要它。此外,这似乎适用于2.11(但IntelliJ将其标记)在Scala 2.10.x上,您需要在构建中包含宏天堂插件:请参阅Shapess文档 IntelliJ经常报告针对使用Scala类型系统的某些方面的代码的虚假错误,而这些方面IntelliJ没有足够的支持。这对于使用依赖方法类型的代码尤其如此,这些依赖方法类型在do上方使用
reverse
和drop
(注意,方法的结果类型取决于参数值)。在所有情况下,命令行编译器都是权威的
val foo = ("foo","bar","other").reverse
val bar = ("foo","bar","other").drop(1)
^