Joh*_*n H 6 ide scala intellij-idea shapeless
这是一个带有具体示例的一般问题。
人们如何进入 Scala 并将其用于大型项目处理工具/IDE 的不可靠性?您是否只接受整个源代码中的红色标记?
我遇到了另一个 Scala 代码库,其中工作代码被 idea 标记为红色Cannot resolve symbol Repr
。
我开始了一个游乐场项目来探索代码库中的一个库 - shapeless(据我所知,它是 Scala 社区中备受推崇的库)。
我从官方无形指南的第一页编写了非常基本的代码。
package example
import shapeless._
object Hello extends App {
val genericEmployee = Generic[Employee].to(Employee("Dave", isOld = true))
val genericIceCream = Generic[IceCream].to(IceCream("yellow", isInCone = false))
def genericCsv (gen: String :: Boolean :: HNil) :List[String] = List(gen(0), gen(1).toString())
println(genericCsv(genericIceCream).toString())
}
case class Employee (name: String, isOld: Boolean)
case class IceCream (name: String, isInCone: Boolean)
Run Code Online (Sandbox Code Playgroud)
gen(0)
并gen(1)
标有No implicits found for parameter at hlist.At[String :: Boolean :: HNil, Nat#N]
该代码有效。
我还记得由 Akka HTTP 引起的错误但不是真正的错误。
IntelliJ 支持依赖宏(例如 shapeless)的库似乎存在根本性困难
\n\n\n\n\n\n\n\n\nShapeless 大量使用宏。我们没有办法普遍支持他们。
\n
\n\n\n\n\n白盒宏存在一个根本障碍。您必须运行完整的类型检查并展开它们才能查看它们返回的类型,而这在每次击键时都是不可行的。另一方面,黑盒宏不应该造成这样的问题。
\n
\n\n\nscala-compiler 和 intellij-scala 是不同的类型检查器,\n scala-reflect 宏当前是针对 scala-compiler\n API 实现的,这使得它们很难在替代的 scala\n 编译器中得到支持。
\n
您可以尝试将突出显示错误报告为错误,网址为
\n\nhttps://youtrack.jetbrains.com/issues/SCL
\n\n这是一个可以用作模板的示例
\n\nhttps://youtrack.jetbrains.com/issue/SCL-16091
\n\n选择受影响的子系统作为Error Highlighting
此功能称为类型感知突出显示T
,可以通过单击右下角的小图标来禁用
\n\n如何处理虚假错误?
\n\n所以,事实是你必须记住,有时会出现\xe2\x80\x99s no Spoon\n 错误。为了帮助我们修复突出显示问题,您可以像往常一样将其报告给\n YouTrack,或者在错误突出显示时按 Alt+Enter:
\n