从Scala中的列表中删除BoxedUnit(也称“如何从存储过程收集值”)
我有一个函数可以非常优雅地执行SQL存储函数:它将参数作为一个列表[ProcedureParameters]。过程参数可以输入、输入或输出 当我从过程中获取返回值时,我会这样收集它们:从Scala中的列表中删除BoxedUnit(也称“如何从存储过程收集值”),scala,jdbc,Scala,Jdbc,我有一个函数可以非常优雅地执行SQL存储函数:它将参数作为一个列表[ProcedureParameters]。过程参数可以输入、输入或输出 当我从过程中获取返回值时,我会这样收集它们: val results: List[Any] = for (parameter <- ps.parameters) yield { index = index + 1 parameter match { case Out(Types.BIGINT) => cs.getL
val results: List[Any] = for (parameter <- ps.parameters) yield {
index = index + 1
parameter match {
case Out(Types.BIGINT) => cs.getLong(index)
case Out(Types.INTEGER) => cs.getInt(index)
// Lots more SQL to Java specific mapping here...
}
}
val结果:List[Any]=for(参数cs.getLong(索引)
case Out(Types.INTEGER)=>cs.getInt(index)
//这里有更多SQL到Java的映射。。。
}
}
这在遍历ProcedureParameters列表方面做得相当好,如果有Out(或InOut)参数,它将获得值
但是如果存在not值,我会得到一个BoxedUnit
然后,结果
列表返回如下:
val results: List[Any] = for (parameter <- ps.parameters) yield {
index = index + 1
parameter match {
case Out(Types.BIGINT) => cs.getLong(index)
case Out(Types.INTEGER) => cs.getInt(index)
// Lots more SQL to Java specific mapping here...
}
}
列表(3007,(),(),(),(),(),(),(),0)
我尝试的第一件事是过滤掉BoxedUnit实例,但我似乎找不到一种方法来进行过滤。.filter(!=BoxedUnit)
不起作用,因为BoxedUnit不是一个值
然后我开始研究一种方法来修改我的for CONTRUMENT(或YILD语句),使其只产生“真实”值(即,要么没有,要么某个实例),但仍然坚持这一点
任何建议都将不胜感激。谢谢
.filter(_ != (()))
BoxedUnit
是一个在您的用例中明显泄漏的实现细节。它是单元
类型在JVM上的具体化,因此它唯一的实例是我们知道的类型单元的唯一值的好的旧的()
BoxedUnit
是一个在您的用例中明显泄漏的实现细节。它是单元
类型在JVM上的具体化,因此它唯一的实例是我们知道的类型单元的唯一值的好的旧的()
BoxedUnit
是一个在您的用例中明显泄漏的实现细节。它是单元
类型在JVM上的具体化,因此它唯一的实例是我们知道的类型单元的唯一值的好的旧的()
BoxedUnit
是一个在您的用例中明显泄漏的实现细节。它是JVM上单元
类型的具体化,因此它唯一的实例是好的旧()
我们知道是类型单位的唯一值这些类型在哪里定义?输入输出,输出?或者参数的类型是什么
?您可以尝试这样做:对于{参数,这些类型在哪里定义?输入输出,输出?或者参数的类型是什么?您可以尝试这样做:{parameter这些类型是在哪里定义的?InOut,Out?或者参数的类型是什么
?您可以尝试这样做:对于{parameter这些类型是在哪里定义的?InOut,Out?或者参数的类型是什么?您可以尝试这样做:对于{参数谢谢!我以前从未遇到过它……在实验过程中,我还发现您可以通过以下方式摆脱它:results.filter(!=scala.runtime.BoxedUnit.UNIT)
是的,这也行得通,因为scala.runtime.BoxedUnit.UNIT
是()
。不过您应该使用()
,因为scala.runtime.
下的所有内容都可能会在不通知的情况下更改或删除。谢谢!我以前从未遇到过它……在进行实验时,我还发现您可以使用以下内容来摆脱它:结果。过滤器(!=scala.runtime.BoxedUnit.UNIT)
是的,这也行,因为scala.runtime.BoxedUnit.UNIT
是编码()
的实现细节。您应该使用()
但是,因为scala.runtime.*
下的所有内容都可能会在不通知的情况下更改或删除。谢谢!我以前从未遇到过它……在进行实验时,我还发现您可以通过以下方式摆脱它:results.filter(!=scala.runtime.BoxedUnit.UNIT)
是的,这也行,因为scala.runtime.BoxedUnit.UNIT
是编码()
的实现细节。您应该使用()
但是,因为scala.runtime.*
下的所有内容都可能会在不通知的情况下更改或删除。谢谢!我以前从未遇到过它……在进行实验时,我还发现您可以通过以下方式摆脱它:results.filter(!=scala.runtime.BoxedUnit.UNIT)
是的,这也行,因为scala.runtime.BoxedUnit.UNIT
是编码()
的实现细节。但是,您应该使用()
,因为scala.runtime.
下的所有内容都可能会在不通知的情况下更改或删除。