问题标签 [scala-compiler]
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.
java - Scala TypeTag 到 java.lang.reflect.Type
我想知道 scala (2.10+) 中是否有一些预定义的函数可以将 scala TypeTag转换为java.lang.reflect.Type。
请注意,我已经看到了这个问题,但我在运行时需要完整的泛型类型信息。
如果不是这种情况,我仍然可以实现我自己的映射,因为我已经有 java 类型的自定义实现。
scala - Scala - 如何在运行时从外部文件编译代码?
我想设计一个 Scala 程序,它接受 Scala 文件作为可以自定义程序执行的参数。特别是,我想在运行时提供包含将由程序调用的方法实现的文件。如何正确依赖外部文件并在运行时动态调用它们的方法?理想情况下,我还希望这些文件能够依赖于我程序中的方法和类。
示例场景:我有一个包含 line 的函数val p: Plant = Greenhouse.getPlant()
,并且Greenhouse
具有该getPlant
方法的类定义在将在运行时提供的文件之一中。在该文件中,该方法getPlant
返回 a Rose
,其中Rose <: Plant
和Plant
在原始程序中定义。假设文件仅在运行时而不是在编译时加入,我如何实现(或近似)这种相互依赖性?
scala - 按类型划分的案例如何在 scala 中工作?
我知道案例类、模式匹配、取消应用和 PartialFunction,但我对下面的宏片段感到困惑。
MemberScope 的 Scaladoc http://www.scala-lang.org/api/2.10.4/#scala.reflect.api.Scopes $MemberScope
收集方法接受PartialFunction[Universe.Symbol, B]
我找不到unapply
方法,MethodSymbol
它也不是案例类的特征,所以在女巫代码编译器中转换
scala - scala tools nsc:在编译器设置中设置编译器标志
我有以下代码:
我想添加弃用、功能警告并显式打开隐式转换和宏。
java - `[ERROR] Nothing <: com.some.SomeType?` 是什么意思?
我有一个带有 scala 和 java 的项目。对于 scala 编译,使用了 scala-maven-plugin。
所以在构建过程中会有一些这样的消息:
这是什么意思?scala类的来源如下:
PS此外,对于其他 scala 类,还有其他此类消息对。
更新的 Maven 构建成功完成,但我在日志中有这些消息。
scala - 演示编译器:在具有多个参数的方法调用中键入完成
我使用askReload将源代码加载到编译器中,然后尝试在之后调用askTypeCompletion。(点)。在第一种情况下完成(具有 2 个参数的方法)不起作用,但在使用一个 arg 的方法调用中完成按预期工作。
有趣的是,如果我有代码:
点之后的完成不再起作用,但是如果我在点之后键入逗号,然后再次尝试在点之后完成,它可以工作:Option("").cata(x => x.<works!>,)
它是一些错误还是预期的行为?
scala - Scala 解析器剪切最后一个括号
结果是:
我期望:
}
如果我使用 Tree 对象中的位置,则缺少最后一个括号(和行尾):text.substring(t.pos.start, t.pos.end)
任何建议如何从 scala.reflect.api.Trees#Tree 对象中提取所有文本?
更新
受影响的 Scala 版本:
- 2.10.6 - sbt 0.13.x 需要
- 2.11.8
- 2.12.7
对于 scala 2.10.6/2.12.7 结果与上述输出相同。
将项目添加到 github
scala - 如何用更大的元组编译 scala 2.11.2?
我尝试按照本指南构建具有更大元组(超过 22 个)的 scala 2.11.2:http: //blog.rogach.org/2013/02/scala-tuplicity-comes-to-210.html
我以前没有构建 scala 库和编译器以及 ant 构建工具的经验,所以我只是尝试在标签 v2.11.2 的新 git 克隆上运行脚本,并希望它能工作。它没有。
我在网上遇到了一个错误ant replacelocker
:
似乎 scala 2.11 的构建方式已经改变。我无法找到有关如何更换ant replacelocker
线路的任何具体信息。
是否可以使用更大的元组构建 scala 2.11.2,就像 2.9 和 2.10 一样?有什么不同的做法?
scala - Scalac 挂在 RegexParser 的相位类型器上
我有一个 scala 程序,其中有一个解析器组合器。这是通过扩展来完成的scala.util.parsing.combinator.RegexParsers
。我使用 Scala 2.10 开发了它,一切正常。
昨天我将系统升级到 Scala 2.11.4,以及 IntelliJ 14.02(没关系)。
但是,每当我现在尝试编译此程序时,都会scalac
在此阶段挂起:
scalac: phase typer on MyParser.scala
我对这段代码完全没有改变,我不明白它为什么挂起或者我应该从哪里开始。IntelliJ 有一个关于解析器表达式的后缀运算符的警告,例如constants_def?
or structure_def*
,其中?
and*
跟在令牌之后,我添加了这一行,因为SIP:Language Modularization Features:
import scala.language.postfixOps
它实际上没有任何效果,问题仍然是一样的。
如何解决正在发生的事情?我不知道从哪里开始理解为什么相位打字机只是无限期地挂起。
scala - 是否有 Scala 编译器标志在没有注释的情况下应用尾递归时发出警告?
当我没有用注释告诉它时,我希望编译器在将尾递归应用于我的一个函数时警告我。这可能吗?
动机:我很少写无限循环作为逻辑错误的问题,但我已经完成了拼写错误(是的,这是可能的)。通常递归无限循环只是告诉你堆栈溢出异常有什么问题,但如果它们被递归编译尾部,它只是挂起。
忘记new
关键字与具有默认参数的案例类结合是一个很好的例子,我愚蠢地偶然发现了两次:
导致没有 SO 的无限循环,但def apply(a: Int): A = new A(a)
不会