Scala:如何从复杂表达式中的元组中获取值
我正在分析一些用别人编写的代码库编写的Scala代码,并试图重构代码。 我想要完成的是:显示statusUpdate变量的值,并捕获其内部变量,如taskRun.filesFound。 在使用copiedBuffer方法将statusUpdate变量写入ChannelBuffer之前,我想先查看向上游传递到其他代码的statusUpdate变量中的内容。 因此,代码描述如下,在该代码中有一个在trait中定义的方法,该trait又被混合到其他类中:Scala:如何从复杂表达式中的元组中获取值,scala,tuples,Scala,Tuples,我正在分析一些用别人编写的代码库编写的Scala代码,并试图重构代码。 我想要完成的是:显示statusUpdate变量的值,并捕获其内部变量,如taskRun.filesFound。 在使用copiedBuffer方法将statusUpdate变量写入ChannelBuffer之前,我想先查看向上游传递到其他代码的statusUpdate变量中的内容。 因此,代码描述如下,在该代码中有一个在trait中定义的方法,该trait又被混合到其他类中: def sendApiUpdate(tasks
def sendApiUpdate(tasks:Map[String,FileTaskState]) = future{
val statusUpdate = MyTaskStatus(tasks.map(tuple=>
(tuple._1, TaskStatus(
tuple._2.task.name,
tuple._2.taskId,
tuple._2.task.taskState.dispName,
tuple._2.taskRun.trawledTime,
tuple._2.taskRun.filesDiscovered,
tuple._2.taskRun.filesWorkedOn
))).toMap)
dispatch(someUrl, ChannelBuffer.copiedBuffer(write(statusUpdate).getBytes("UTF-8") ))
}
其中MyTaskStatus是一个案例类,如下所示:
case class MyTaskStatus(taskMap:Map[String, TaskStatus])
任务是:
tasks: Map[String, FileTaskState]
FileTaskState是一个案例类,如下所示:
case class FileTaskState(trawler: ActorRef, taskId: String, runId: String, taskRun)
//there are more field values but I left them out
发现的文件是:
def filesDiscovered = noFilesDiscovered.getOrElse(0L)
此外,在以下代码行中:
tuple._2.taskRun.filesDiscovered
taskRun is one of the fields of case class FileTaskState
taskRun is:
taskRun: TaskRun
and TaskRun is a case class described as below:
case class TaskRun( taskId: String, noFilesDiscovered)
更新: 我想在tasks.map(…)的单独变量中提取与元组相关的值。 例如,我想提取元组。_2.taskRun.filesDiscovered到:val filesDisc= 目的是帮助我进行重构
提前感谢你说的“捕获”是什么意思?在调试器中查看?如果是这样,请在dispatch()行上设置一个断点并查看。日志然后在同一位置添加日志语句?这些答案太明显了,所以我怀疑你的意思完全是另外一回事。是的,我实际上不是指“捕获”。我将更新这个问题。我一直在寻找一种方法来提取这个值:tuple.\u 2.taskRun.filesdescovered,用于不同的目的