scalac相关内容
我想更清晰地了解 scala 编译的各个阶段.我知道某些事情必须在编译器中发生,但并不真正知道它们发生的顺序以及顺序应该如何影响我的编程. 我是否正确地说以下内容是编译器功能的完整列表? 解析程序 检查类型 删除 隐式转换 生成的字节码 优化 如果是这样,它执行这些阶段的顺序是什么?这个顺序对程序员,尤其是类型级程序员有什么影响? 解决方案 您可以使用 scal
..
所以我有一个包含 scala 作为源代码的 jar 文件,而我丢失了原始代码.有没有办法将 jar 中的类文件转换为 Scala 函数和类,而不是编译器生成的 java 类? 我试过在它上面使用反编译器,它只给了我零意义的 java 代码. 先谢谢你! 解决方案 您需要一个特定于 Scala 的反编译器.没有理由不能写出来,但这将是一项巨大的努力,据我所知,没有人真正做到过.当
..
我正在尝试使用 Scala 的 java jcommander 库.java JCommander 类有多个构造函数: public JCommander(Object object)公共 JCommander(对象对象,ResourceBundle 包,字符串...参数)公共 JCommander(对象对象,字符串...参数) 我想调用第一个采用无可变参数的构造函数.我试过了: jCom
..
考虑以下类: 包测试类测试{def main(args: Array[String]): Unit = {val i: 整数 = 0打印(一)}} main 的字节码为: public main([Ljava/lang/String;)V//参数最终参数L0LINENUMBER 4 L0图标_0L12号店L2LINENUMBER 5 L2GETSTATIC scala/Predef$.MOD
..
如何找到最新 scalac 版本的所有标志?谷歌搜索几个小时后,我只发现 过时 文档.(例如,他们甚至没有提到“-feature"标志). 有没有办法从 scalac 或其他任何东西中获取带有描述的编译器标志列表? 解决方案 我能找到的最接近的是编译器的相关源文件.不幸的是,这些选项分布在多个文件中.在撰写本文时,它分解如下: ScaladrefrSettings>(用于基本标
..
我正在尝试通过 sbt 插件添加库依赖项.依赖项应该添加到每个子项目的二进制 scala 版本中,所以我遍历每个子项目. private def injection(): State =>状态 = { 状态 =>val 提取:Extracted = Project.extract(state)val 丰富的LibDepSettings = extract.structure.allProjec
..
我收到一个错误 有 15 个功能警告;使用 -feature 重新运行以获取详细信息 : $/usr/local/sbt/bin/sbt[信息] 从/home/alex/Documents/projects/my_app123/project 加载项目定义[信息] 将当前项目设置为 sbt-android(在构建文件中:/home/alex/Documents/projects/my_app12
..
为什么 scalac(Scala 编译器)优化尾递归? 证明这一点的代码和编译器调用: > 猫 foo.scala类 Foo {def ifak(n: Int, acc: Int):Int = {如果(n == 1)acc否则 ifak(n-1, n*acc)}}> scalac foo.scala> jd-gui Foo.class导入 scala.ScalaObject;公开课 Foo
..
将Scala文件反编译为Java代码时,经常会遇到用 ScalaSignature s注释的类.这些似乎只有一个注释值,即某种程度上已编码的String.为什么Scala编译器会创建这样的奇数构造,而不是在 class 文件中使用自定义的 Attribute ? 解决方案 来自将腌制的Scala签名存储在类文件中: 遗产签名存储方法作为属性同时更优雅更紧凑(约15%)和更简单比起使用
..
因此,我有一个jar文件,其中包含scala作为源代码,并且丢失了原始代码.有没有一种方法可以将jar中的类文件转换为scala函数和类,而不是编译器创建的java类? 我尝试在其上使用反编译器,但它只给我带来零意义的Java代码. 提前谢谢! 解决方案 您需要特定于Scala的反编译器.没有理由不能写,但这是一个很大的努力,据我所知,实际上没有人写过.当然,它不会产生完全原始
..
假设定义了一个名为"summoner"的类,该类能够从作用域中调用隐式视图: case class Summoner[R]() { def summon[T](v: T)(implicit ev: T => R): R = ev(v) } 我发现它在大多数情况下都有效,但是在某些情况下它不起作用,例如以下是(不是太)使用singleton-ops库的简短案例:
..
我有一个scala程序,其中除其他外还具有解析器组合器.这是通过扩展scala.util.parsing.combinator.RegexParsers来完成的.我使用Scala 2.10进行了开发,并且一切正常. 昨天我将系统与IntelliJ 14.02一起升级到了Scala 2.11.4(无关紧要). 但是,每当我现在尝试编译该程序时,scalac就会在此阶段挂起: sca
..
我一直在追问以下问题,希望有一个比我自己有更多经验的人可以帮助我解决问题. 在我的测试案例中,确切的错误如下: java.lang.IllegalArgumentException:在列表中找不到val用户的代理:specs.BasicSpec#User(值用户,方法applyOrElse,,方法$ anonfun $ new $ 97,值FiveLetterNames,方法$ ano
..
我正在尝试使用Scala中的java jcommander库。 java JCommander类有多个构造函数: public JCommander(Object object) public JCommander(Object object,ResourceBundle bundle ,String ... args) public JCommander(Object object,
..
我正在遇到一个意想不到的(仅对我而言)ScalaC行为。 TL; DR是以下是在尝试从maven迁移代码库时看到的问题去b。这种迁移的主要重点之一是尝试最小化每个类对编译所需的依赖性,以便只有在需要时才会触发构建。 不幸的是,我看到的是给定 ClassIndirectlyNeedingFoo (uses) - > ClassUsingFoo (用途) - > 供应商 ClassIndi
..
我有这个小scala例子: object Test { def add(x:Int,y: int)= { val z = x-y x match { case 0 => 0 - y case 1 => 1 - y case _ => x - y } x + y } def main(args:Array [String]){ println(ad
..
我想要锐化我的scala编译阶段的图片。我知道某些事情必须发生在编译器中,但不知道它们发生的顺序和顺序应该如何影响我的编程。 我是 解析程序 types checked 删除 隐藏转换 产生字节码 优化 如果是这样,这些阶段的顺序是什么? 这个命令如何影响程序员,特别是类型级程序员? 解决方案 在2.11中,使用 - 以下是2.10.0的用法:
..
FSC每次都重新编译我的.scala文件,即使没有必要 - 我可以编译它两次,而不需要在尝试之间编辑任何东西,它会重新编译它们! 例如,我有2个文件 Hello.scala class Hello { print(“hello”) } 和Tokens.scala: 抽象类Token(val str:String,val start:Int,val end
..