scala 相关问题

Scala是一种通用编程语言,主要针对Java虚拟机。旨在以简洁,优雅和类型安全的方式表达通用编程模式,它融合了命令式和函数式编程风格。其主要特点是:具有类型推断的高级静态类型系统;功能类型;模式匹配;隐含参数和转换;运算符重载;与Java的完全互操作性;并发

Scala:通过包外的结构类型访问包可见方法

这不能按预期工作(因为我试图从外部服务调用私有运行的包): 对象服务{ 类 HelloPrinter { 私人[服务] def run =“你好” } } 瓦尔...

回答 1 投票 0

使用 Stax2 转义 Scala 中的特殊字符

我正在尝试使用 Stax2 来编写带有转义特殊字符的属性的 xml 文件。 当我试图实现这样的精确输出时: 我正在尝试使用 Stax2 来编写带有转义特殊字符的属性的 xml 文件。 当我试图实现这样的精确输出时: <elem1 att1="This &#x0A; That" /> 但是当我使用通常的XMLStreamWriter时,输出是这样的: <elem1 att1="This &amp;#x0A; That" /> 所以我用 Stax2 尝试了以下操作: import org.codehaus.stax2.{XMLOutputFactory2} import org.scalatest.funsuite.AnyFunSuite import java.io.{File, FileOutputStream} import javax.xml.stream.{XMLOutputFactory, XMLStreamWriter} class testStreamXML extends AnyFunSuite{ val file = new File("stax2test.xml") val fileOutputStream = new FileOutputStream(file) val outputFactory: XMLOutputFactory2 = XMLOutputFactory.newInstance().asInstanceOf[XMLOutputFactory2] //outputFactory.setProperty(XMLOutputFactory2.P_ATTR_VALUE_ESCAPER, true) val writer= outputFactory.createXMLStreamWriter(fileOutputStream) writer.writeStartDocument() writer.writeStartElement("elem1") writer.writeAttribute("att1", "This &#x0A; That") writer.writeEndElement() writer.writeEndDocument() } 每当我尝试将属性 P_ATTR_VALUE_ESCAPER 设置为 true 或 false 时,我都会收到此错误: An exception or error caused a run to abort: class java.lang.Boolean cannot be cast to class org.codehaus.stax2.io.EscapingWriterFactory (java.lang.Boolean is in module java.base of loader 'bootstrap'; org.codehaus.stax2.io.EscapingWriterFactory is in unnamed module of loader 'app') java.lang.ClassCastException: class java.lang.Boolean cannot be cast to class org.codehaus.stax2.io.EscapingWriterFactory (java.lang.Boolean is in module java.base of loader 'bootstrap'; org.codehaus.stax2.io.EscapingWriterFactory is in unnamed module of loader 'app') at com.ctc.wstx.api.WriterConfig.setProperty(WriterConfig.java:401) at com.ctc.wstx.api.CommonConfig.setProperty(CommonConfig.java:100) at com.ctc.wstx.stax.WstxOutputFactory.setProperty(WstxOutputFactory.java:153) at testStreamXML3.<init>(testStreamXML3.scala:10) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500) at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128) at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:350) at java.base/java.lang.Class.newInstance(Class.java:645) at org.scalatest.tools.Runner$.genSuiteConfig(Runner.scala:1402) at org.scalatest.tools.Runner$.$anonfun$doRunRunRunDaDoRunRun$8(Runner.scala:1199) at scala.collection.immutable.List.map(List.scala:246) at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:1198) at org.scalatest.tools.Runner$.$anonfun$runOptionallyWithPassFailReporter$24(Runner.scala:993) at org.scalatest.tools.Runner$.$anonfun$runOptionallyWithPassFailReporter$24$adapted(Runner.scala:971) at org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:1480) at org.scalatest.tools.Runner$.runOptionallyWithPassFailReporter(Runner.scala:971) at org.scalatest.tools.Runner$.run(Runner.scala:798) at org.scalatest.tools.Runner.run(Runner.scala) at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.runScalaTest2or3(ScalaTestRunner.java:38) at org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:25) 有什么建议如何解决这个问题吗?或者达到我转义属性中特殊字符的目的? 您所指的属性确实需要一个 EscapingWriterFactory 类。这是文档: 如果需要对属性值内容进行自定义输出转义,可以设置的属性。值集必须是类型 逃离WriterFactory。设置后,工厂将用于创建 每个写入器实例用于转义所有写入的属性值,两者 通过显式 XMLStreamWriter.writeAttribute(java.lang.String, java.lang.String) 方法,以及通过复制方法 (XMLStreamWriter2.copyEventFromReader(org.codehaus.stax2.XMLStreamReader2, 布尔值))。 [1] 关于如何实现“个人”逃避该工厂的实施的问题就可以完成这项工作。这是一个使用给定编写器的简单实现(受 [2] 启发),无需应用任何转义 - 这可能是您想要解决的任何特殊用例的起点: class CustomXmlEscapingWriterFactory extends EscapingWriterFactory{ override def createEscapingWriterFor(writer: Writer, s: String): Writer = new Writer(){ override def write(cbuf: Array[Char], off: Int, len: Int): Unit = writer.write(cbuf, off, len) override def flush(): Unit = writer.flush() override def close(): Unit = writer.close() } override def createEscapingWriterFor(outputStream: OutputStream, s: String): Writer = throw IllegalArgumentException("not supported") } class TestStreamXML extends AnyFunSuite{ val file = new File("stax2test.xml") val fileOutputStream = new FileOutputStream(file) val oprovider: OutputFactoryProviderImpl = new OutputFactoryProviderImpl() val outputFactory: XMLOutputFactory2 = oprovider.createOutputFactory() // your factory implementation goes here as property outputFactory.setProperty(XMLOutputFactory2.P_ATTR_VALUE_ESCAPER, CustomXmlEscapingWriterFactory()) val writer= outputFactory.createXMLStreamWriter(fileOutputStream) writer.writeStartDocument() writer.writeStartElement("elem1") writer.writeAttribute("att1", "This &#x0A; That") writer.writeEndElement() writer.writeEndDocument() } 结果输出如下所示: <?xml version='1.0' encoding='UTF-8'?><elem1 att1="This &#x0A; That"/> [1] https://fasterxml.github.io/stax2-api/javadoc/4.0.0/org/codehaus/stax2/XMLOutputFactory2.html#P_ATTR_VALUE_ESCAPER [2] 使用 jackson-dataformat-xml 转义引号

回答 1 投票 0

Scala 中可以解构输入参数吗?

有没有办法解构 Scala 中函数的输入参数(类似于 Clojure)? 所以,而不是 scala> def f(p: (Int, Int)) = p._1 f: (p: (Int, Int))Int 我想要这个(它确实...

回答 3 投票 0

是否有兼容 Scala 2 和 Scala 3 的可变参数拼接语法?

上下文 Scala 2 和 Scala 3 之间的差异之一是可变参数拼接的语法。 所以给出 def组合(字符串:字符串*):单位= { println(strings.mkString("; ")) } 瓦尔利斯...

回答 1 投票 0

操作序列过滤器的安全方法

下面代码的目的是获取id等于30的学生的姓名 类 Person(名称: String , id : Int ) val 人 = 序列( 人(“艾米丽”,10), 人(“

回答 1 投票 0

如何从右侧通过分隔符分割字符串?

如何用右侧的分隔符分割字符串? 例如 scala> "你好,你好吗?".rightSplit(" ", 1) res0: Array[java.lang.String] = Array(你好,你好吗?) Python 有一个 .r...

回答 4 投票 0

ArrayBuffer 不带此参数

我正在使用 Eclipse 进行 Scala 工作。 有人可以解释为什么我会收到此错误吗? ArrayBuffer 行中不带此参数 var ArrayBuffer1 = ArrayBuffer(1,2,3,4,5) 以下是

回答 1 投票 0

Scala Option 和 flatMap

我正在尝试掌握“Scala 方式”工作的窍门,所以我想知道下面的代码是否是在这种情况下应该如何完成的事情。 所以我有实体 User 和 Company (用 LiftWeb 映射

回答 3 投票 0

有没有办法修复删除了转义字符的无效 JSON 记录?

我们的代码中有一个错误,我们不小心从 JSON 中删除了所有转义字符,导致记录无效。我们的原始版本看起来像这样,其中元数据字段包含一个

回答 1 投票 0

Scala:逐行读取巨大的压缩文本文件而不加载到内存中

我有一个大小为 100-200 GB 的文本文件。所以我希望以压缩格式存储(例如zip)。但是,由于其大小,我需要一次处理一行。虽然它很容易理解...

回答 3 投票 0

玩吧! 3.0 NoSuchMethodError:'com.google.inject.Provider com.google.inject.util.Providers.guicify(javax.inject.Provider)'

我刚刚回到旧游戏!我的框架项目从2.6.0版本开始,已经更新到3.0.2版本 修复错误并更新要编译的项目后,我开始运行...

回答 1 投票 0

Scala 3,ADT,组合集合中的元素

我是 Scala 新手,正在尝试使用 Scala 3 枚举作为 ADT,并且我有一个集合,我试图通过以下方式“减少”: 枚举统计: case MaximumHealth(val x: 浮点数) 案例

回答 1 投票 0

“java.lang.NoSuchMethodError:'scala.collection.JavaConverters$AsJava scala.collection”错误

我在这里陷入困境。我正在尝试实现一个非常基本的管道,它从 kafka 读取数据并在 Spark 中处理它。我面临的问题是 apache Spark 突然关闭,给出

回答 1 投票 0

Spark 保留临时视图

我试图保留一个临时视图,以便通过sql再次查询它: val df = Spark.sqlContext.read.option("header", true).csv("xxx.csv") df.createOrReplaceTempView(“xxx”) 坚持/cac...

回答 1 投票 0

我正在准备scala考试并面临这个问题

我正在scala eclipse中做,直到ArrayBuffer主题我没有任何问题 我正在做 ArrayBuffer 主题,有人可以解释一下为什么我会收到此错误,如果可能的话我想知道解决方案

回答 1 投票 0

Scala 使用 intellij 编译 SBT 组件时出错

我正在尝试使用 intelliJ 14.1.4 编译混合 java-scala 代码 但它一直给我这个错误: 编译 SBT 组件“compiler-interface-2.9.2-52.0”时出错 我尝试过降级我的 sc...

回答 11 投票 0

如何从 Scala 中的参数化枚举中获取值

我正在尝试将枚举中的值添加在一起,但我找不到如何提取参数化值。 枚举统计: case MaximumHealth(x: 浮点数) 案例 HealthRegen(x: 浮点数) def 的东西: 浮动 =...

回答 1 投票 0

如何在 Scala 中向 Delta 表添加注释?

我想向现有 Delta 表的列添加注释,而不必实际编写诸如“ALTER TABLE ALTER COLUMN”之类的 SQL 语句。是否可以仅使用 Scala 来完成?

回答 1 投票 0

是否可以在内联方法或子句中发出动态生成的编译器错误消息?

通过方法上下文参数调用实例允许自定义错误消息,以声明方式使用 @implicitNotFound 注释参数,这需要一个文字字符串

回答 1 投票 0

我在 MacOS 上安装了 scala 3.4.1,但 util 的版本信息是 2.13.12

我用brew在MacO上安装了Scala 3.4.1。 scala 命令运行并打开 scala 命令行为 3.4.1,但获取的版本信息为 2.13.12 scala --版本 Scala 代码运行器版本 3.4.1 --

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.