scalameta相关内容
我想在 Scala 2.11+ 中使用注释宏生成方法的别名.我什至不确定这是否可能.如果是,怎么做? 示例 - 鉴于以下情况,我希望注释宏扩展为 类 Socket {@alias(aliases = Seq("!", "ask", "read"))def load(n: Int): Seq[Byte] = {/* impl */}} 我希望上面生成的同义词方法存根如下: 类 Socke
..
在 scala 语言中,隐式解析通常在编译时完成,有时会抛出混淆的错误信息,此类错误的一个著名例子是 shapeless Generic 抛出错误信息,如: 错误:找不到参数编码器的隐式值:CsvEncoder[Foo] (参见 https://books.underscore.io/shapeless-guide/shapeless-guide.html 详情) 这个问题的解决方案是在
..
如何编写宏注释,其用法类似于 @named("+2") _ + 2 并产生: new (Int => Int) {覆盖 def toString(): String = "+2"def apply(x: Int): Int = x + 2} 解决方案 正确的语法是 ((_: Int) + 2): @named("+2").不幸的是,注释表达式的宏注释不会扩展. 最简单的就是使用 对象
..
我刚刚更新到 scala meta 2.0.0-M1 和最新的 scala 2.12.3,现在宏不再编译.我所做的唯一更改是将元版本从 1.8.0 更改为 2.0.0-M1. 错误:新样式(“内联")宏需要 scala.meta 有人知道是否有快速解决方法吗? 我希望开始尝试一些语义改进. 解决方案 scalameta/paradise 目前仅支持 scalameta 1
..
例如如下代码: object Test 扩展应用{特质类{val f1: 整数}val c = 新类{val f1: Int = 1val f2: String = "Class"}打印(c.f1)打印(c.f2)} 我使用反编译器查看字节码,并注意到编译生成了一个 java 接口“Test.Class"作为伪代码: trait 类{val f1: 整数} 和一个类 'Test$$anon
..
我正在编写一个 Scala 程序,我希望它能够与一个大库的两个版本一起使用. 这个大库的第 2 版对 API 进行了非常轻微的更改(只有一个类构造函数签名有一个额外的参数). //Lib v1class APIClass(a: String, b:Integer){...}//库 v2class APIClass(a: String, b: Integer, c: String){...}
..
如何编写看起来像@named("+2") _ + 2的用法的宏注释并产生: new (Int => Int) { override def toString(): String = "+2" def apply(x: Int): Int = x + 2 } 解决方案 正确的语法是((_: Int) + 2): @named("+2").不幸的是,注释表达式的宏注释无法扩展.
..
在scala语言中,隐式解析通常是在编译时完成的,有时会抛出混淆的错误信息,此类错误的一个著名示例是当无形状的Generic抛出诸如以下的错误信息时: error: could not find implicit value for parameter encoder: CsvEncoder[Foo] (请参见 https://books.underscore.io/shapeless-
..
假设我有一个图书馆a.com.每次在每个文件中,我都需要导入很多程序包,例如 import a.com._ import a.com.b._ import a.com.c import a.com.Implicits._ 我不想每次都在的每个文件中编写这些代码 另一个项目. 此外,如果我想将a.com更改为a.net,则必须更改每个文件. 反正有防止这种情况发生吗? 解
..
我想使用Scala 2.11+中的注释宏生成方法的别名.我什至不确定那是否有可能.如果是,怎么办? 示例-鉴于此,我希望注释宏扩展为 class Socket { @alias(aliases = Seq("!", "ask", "read")) def load(n: Int): Seq[Byte] = {/* impl */} } 我希望以上代码生成同义词方法存根,如下
..