问题标签 [scalac]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - Scala 编译器如何在 trait 中定义 final val?
我经常使用无私的特征模式,并且我需要在特征中使用“昂贵的”常量:我希望在我的所有应用程序中拥有这些值的单个实例,这可能需要计算几个步骤。
然而,无私的特质模式导致了以下设计:
- 一个特质 MyStuff
- 一个对象 MyStuff 扩展了 MyStuff
显然,将常量放在对象中并在 trait 中使用它们会产生循环依赖。然而,将它们放在 trait 上,使得所有扩展 trait 的类都可以覆盖它们,因此它们肯定不是应用程序范围的单例。
Scala 编译器是否“足够聪明”以使特征中的最终 val 变为“旧的 java public static final”?
scala - 日志隐含仅用于“发散隐式扩展”
其他答案建议使用"-Xlog-implicits"
选项来调试“发散隐式扩展”错误。但是,它还在与这些错误无关的地方记录了很多隐含信息。有没有办法限制它只解释产生编译错误的地方?
scala - 如何解释这个 Scala 解释类型消息?
启用了“解释类型”编译器选项的 IntelliJ 会发出以下错误消息:
我怀疑 IntelliJ 正在修改scalac
输出,所以我使用 flag 手动运行编译器-explaintypes
:
注意:我已经用 替换了上面的真实类型名称Z
,因为它很长,我怀疑它不相关。
可悲的是,这两条消息都没有对我解释太多。有人可以解释如何解释这些消息,理想情况下是指向文档的指针吗?谷歌搜索scalac explaintypes
主要返回关于人们抱怨他们不理解输出的消息线程。
scala - com.ayx 中无法访问包 x 中的类 SomeClass
我正在尝试取消 Spring IoC 几个 Java 类并将它们直接加载到一些 Scala 代码中。自然地,我发现像这样的包之间存在名称空间冲突
和
我尝试过使用导入名称空间解析器,例如
这会清理导入,但稍后在类中引用这些类会将错误显示为 Typesafe ScalaIDE 中的悬停,以及在干净编译之后。
当我从 gradle scala 插件或通过带有 scala 2.10.2 或 2.10.3 的 Typesafe ScalaIDE 编译时,我收到以下类型的无用错误消息:
如果我尝试使用 com.ayx 中没有名称空间冲突的类,则会出现问题。如果我尝试一些 scalac 标志,我也能够得到一个稍微不同的警告(在打字阶段):
我真的很想知道是否有办法扩展第一个包参考。我在设置 Eclipse 项目来调试 scalac 编译器时遇到问题,而且我还没有找到向错误添加有用信息的 scalac 标志。
当我尝试ctx.getBean("someClass").asInstanceOf[XXXSomeClass]
或时发生错误new XXXSomeClass
。
警告中的this
引用让我认为正在发生一些对象混淆。我不认为这是我正在处理的较大项目中的类路径问题,因为删除一个 jar 会删除解析导入的能力,但是我无法在单独的项目中使用简单的示例类来重现它。
有关 java 类的更多信息 - 不同的、冲突的 java 包位于不同的 jar 中,这些 jar 由 1.6 版的 Java 编译。它们是顶级的公共类,尽管其中两个是具有私有构造函数和相应的公共静态 getInstance() 方法的单例。
sbt - 显示从 SBT 构建发出的确切 scala 命令
当我针对本地版本的 Scala 构建我的(相对复杂的)SBT 项目时,我收到以下错误:
这可能是scalac
我们构建文件中的错误。但是,直接调用时我无法重现此错误scalac
:
这按预期运行。有没有办法让 SBT 显示scalac
它发出的确切命令?(请注意,将确切的标志从scalacOptions
to传递scalac
也不会导致错误)。
scalacOptions
是:
有问题的存储库是Scala.js masterscalajs-library
的子项目,其中当前Scala master的构建为.scalaHome
要为此构建配置项目,请发出:
在根项目中。
maven-3 - maven在编译scala时“使用-feature重新运行”
我最近注意到 Maven 生成的 Scala 编译器警告如下所示:
[WARNING] 警告:有 4 个弃用警告;使用 -deprecation 重新运行以获取详细信息
[WARNING] 警告:有 3 个功能警告;使用 -feature 重新运行以获取详细信息
[WARNING] 发现两个警告
我并没有立即明白如何遵循警告的说明,因此我可以获得有关如何更改代码的详细信息。
scala - Scala不确定/缓存类?
我有一个非常简单的目标:编译一个 Scala 类,然后从另一个 Scala 脚本中加载它。问题是 Scala 似乎缓存(不确定在哪里)我创建的类,并且不尊重后续更改。
以下几行创建一个包含两个 .scala 文件的目录,编译一个并运行另一个:
如果我运行上面的行,我需要重新启动我的计算机才能使下面的行工作:
如果我不重新启动,我会收到一个错误,即我的构造函数中缺少一个字符串。不确定它在 Scala 的哪个地方缓存了以前的基于字符串的构造函数。
scala - 如何将 fsc 与 sbt 一起使用?
相关问题:SBT 是否使用快速 Scala 编译器 (fsc)?
fsc 可以和 sbt 一起使用吗?实用吗?如果是这样,如何将 fsc 集成到 sbt 中?
scala - 用于 Call-by-Name 使用参考的 scalac
我有一些功能:
然后我称之为:
为上述代码生成的字节码如下所示:
如果我更改函数def f(x: Int)来表示按名称调用:
为同一部分代码生成的字节码如下所示:
我的问题是:
对于 Call-by-Name,我们对引用进行操作是一个规则,还是取决于编译中的语义分析阶段?
scala - Scala:#include 文件的最简单方法是什么
在 Scala 源文件中包含文件的最简单方法是什么?
Scala 缺乏一流的导入和导出。我喜欢以准多重继承的形式来构建我的包/项目依赖关系。对我来说,这确实有助于产生干净有效的设计。我对 C# 名称空间做了同样的事情。不幸的是,C# 和 Scala 的语法都不真正支持这种方法论/策略。
不再包括 name1 命名空间,因此必须在单独的行上导入每个级别,这会破坏层次结构。甚至在以前,一个包也只能从一个父级继承。当前的系统非常不干燥,不断重复导入。当然我可以使用 IDE 模板,但模板仍然不是 DRY。在我看来,复杂的模板 IDE 不是一个好的解决方案(例如 HTML / CSS)。在导入列表有时比类定义长的 JavaFx / ScalaFx 文件中,这让我觉得特别糟糕。所以最好的解决方案似乎是为每个包创建一个包含所有常见导入的包含文件,然后
我是否需要编写一个编译器插件来实现这一点?
或者还有其他东西可以实现这个功能吗?
编译器插件应该是相对小而直接的项目吗?