scala - Scala:如何将一些转换为实际
问题描述
我是 Scala 的新手,我正在尝试以制表符分隔格式获取“Lr”类型的所有属性值。但是,每当我执行如下所示的“Echo”时,程序就会返回:
Some(something1) Some(something2)
鉴于,我期待:
something1 something2
关于如何修改我的代码以获得我的预期格式的任何线索?
package com.......
case class Lr (
some1_ID : Option[String],
some2_ID : Option[String]
)
{
def getData(): String =
{
return productIterator.mkString("\t")
}
}
object Echo {
def main( args:Array[String] ):Unit =
{
val testLR = Lr(Option("something1"),Option("something2"))
print(testLR.getData())
}
}
解决方案
如果某些属性为无,这取决于您要做什么。
如果你想丢弃无
case class Lr (some1_ID : Option[String], some2_ID : Option[String]) {
def getData: String = {
Seq(some1_ID, some2_ID).flatten.mkString("\t")
}
}
如果您想使用替代值
case class Lr(some1_ID : Option[String], some2_ID : Option[String]) {
def getData: String = {
Seq(some1_ID, some2_ID).map(_.getOrElse("XXX")).mkString("\t")
}
}
如果你想使用productIterator,它是一个Iterator[Any],所以你需要模式匹配才能使用Options。
case class Lr(some1_ID : Option[String], some2_ID : Option[String]) {
def getData: String = {
productIterator.collect {
case Some(value) => value
// case None => "ALTERNATIVE VALUE"
// case others => others (non Option fields)
}.mkString("\t")
}
}
推荐阅读
- c# - JSON 转换为 C#
- ode - 无法使用 zdot 函数求解 ODE
- c# - unity跨脚本变量编辑
- sql - Azure SQL 数据库查询性能下降(查询存储的原因?)
- python - 在 Scipy Optimize Minimize() SLSQP 中共享目标和约束计算
- python - Chromedriver 不适用于硒
- c++ - 有没有办法在没有 Visual Studio 的情况下使用 DirectXTex?
- flutter - 在颤振加载中加载更多列表,但用户界面没有改变
- pandas - 如何在熊猫中通过 multiIndex 和前一个值交替值?
- python - 在 pyproject.toml 中指定命令行脚本