问题标签 [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.

0 投票
3 回答
552 浏览

performance - 为什么scalac在某些场景下不能优化尾递归?

为什么scalac(Scala编译器)不优化尾递归?

演示这一点的代码和编译器调用:

0 投票
1 回答
1365 浏览

java - How do I alias the scala setter method 'myvar_$eq(myval)' to something more pleasing when in java?

I've been converting some code from java to scala lately trying to teach myself the language.

Suppose we have this scala class:

Now I want to access it from java so I can't use dot-notation like I would if I was in scala.

So I can get my var's contents by issuing:

and set it via:

This holds true cause our Person Class looks like this in javap:

Yes, I could write my own getters/setters but I hate filling classes up with that and it doesn't make a ton of sense considering I already have them -- I just want to alias the _$eq method better. (This actually gets worse when you are dealing with stuff like antlr because then you have to escape it and it ends up looking like person.name_\$eq("newname");

Note: I'd much rather have to put up with this rather than fill my classes with more setter methods.

So what would you do in this situation?

0 投票
5 回答
8175 浏览

java - 如何在 Scala 中消除带可变参数和不带可变参数的方法之间的歧义

我正在尝试使用 Scala 的 java jcommander 库。java JCommander 类有多个构造函数:

我想调用第一个带可变参数的构造函数。我试过了:

我得到错误:

我也尝试过使用命名参数,但得到了相同的结果:

如何告诉 Scala 我想调用不带可变参数的构造函数?

我正在使用 Scala 2.8.0。

0 投票
2 回答
733 浏览

scala - FSC 每次都重新编译

FSC 每次都重新编译我的 .scala 文件,即使不需要 - 我可以编译它两次,而无需在尝试之间编辑任何内容,它会重新编译它们!例如,我有 2 个文件

你好.scala

和 Tokens.scala:

当我要求 ant 从头开始​​编译项目时,我看到以下输出:

比我不编辑任何东西并再次询问 ant compile :

如您所见,fsc 在 Hello.scala 的情况下表现得很聪明(没有重新编译)而在 Tokens.scala 的情况下表现得很愚蠢。我认为这个问题与继承有关,但仅此而已。

那么有什么问题呢?

0 投票
2 回答
1696 浏览

scala - 如何关闭 Scala 快速编译服务器 (FSC) 的超时?

我正在使用 Scala 编译服务器。这可能与我的 IDE IntelliJ IDEA 无关,但我只会通知您,我通过该 IDE 中的特殊运行配置启动 Scala 编译服务器。

经过一段时间没有编译任何东西后,编译服务器终止,没有任何消息。通常,我只有在尝试编译某些东西并且编译失败时才会注意到这一点。然后,我需要重新启动编译服务器,当然下一次编译需要很长时间,因为这又是启动编译服务器后的第一次编译。

如何关闭该超时?我查看了 scalac 的联机帮助页,似乎没有选择。我可以为该运行配置添加 VM 选项。

0 投票
4 回答
4309 浏览

scala - scala 编译器阶段的顺序是什么?

我想加深我对 scala 编译阶段的了解。我知道某些事情必须在编译器中发生,但并不真正知道它们发生的顺序以及顺序应该如何影响我的编程。

我是否正确地说以下内容是编译器功能的完整列表?

  • 解析程序
  • 检查类型
  • 做擦除
  • 隐式转换
  • 生成的字节码
  • 优化

如果是这样,它执行这些阶段的顺序是什么?这个顺序如何影响程序员,尤其是类型级程序员?

0 投票
3 回答
320 浏览

scala - 将scalac插件拆分为多个文件

我想将我的scalac插件分成多个文件。这听起来很容易,但由于线路相关的类型问题,我还没有成功import global._

这是 Lex Spoon 的示例插件:

如何在没有in 范围的情况下将Componentand放入他们自己的文件中?DivByZeroPhaseimport global._

0 投票
1 回答
248 浏览

scala - 在特定阶段后停止 Scala 编译

我正在通过像这样在进程内运行它来测试我的插件:

但是,考虑到scalac我真的希望编译在某个阶段之后结束(特别是在我的插件运行之后)的速度很慢。不幸Global.cancel的是没有达到预期的效果。我该怎么做?

0 投票
1 回答
889 浏览

scala - 添加 scala-compiler.jar 作为运行时依赖项

我正在使用 sbt 及其 Proguard 插件为我的程序创建一个可执行 jar。但是,我的程序在运行时依赖于scala-compiler.jar进行编译。我似乎无法scala-compiler.jar进入我的最后一个罐子。这个页面有一些非常相似的信息,但我无法让它从头到尾工作。有什么建议么?

编辑:这是我得到的最接近的:

这包括 proguard min jar 中的编译器 jar,但运行它我仍然得到:

0 投票
3 回答
6069 浏览

java - Scalac解析Java代码的永久隐藏警告-编译器错误?

scalac Java 解析器反对我的 Java 代码

这似乎是导入和正在编译的包中具有相同名称的类之间的冲突。

在我的包裹里,我有一堂课

与来自不同包的导入类同名

它在哪里抱怨进口。Javac 很高兴。请注意,我不必引用我的类版本——只要它的存在就足以触发导入警告。

我可以通过删除导入并显式引用@Entity 来解决此问题,但这是编译器中的错误吗?