Scala:如何从复杂表达式中的元组中获取值

Scala:如何从复杂表达式中的元组中获取值,scala,tuples,Scala,Tuples,我正在分析一些用别人编写的代码库编写的Scala代码,并试图重构代码。 我想要完成的是:显示statusUpdate变量的值,并捕获其内部变量,如taskRun.filesFound。 在使用copiedBuffer方法将statusUpdate变量写入ChannelBuffer之前,我想先查看向上游传递到其他代码的statusUpdate变量中的内容。 因此,代码描述如下,在该代码中有一个在trait中定义的方法,该trait又被混合到其他类中: def sendApiUpdate(tasks

我正在分析一些用别人编写的代码库编写的Scala代码,并试图重构代码。 我想要完成的是:显示statusUpdate变量的值,并捕获其内部变量,如taskRun.filesFound。 在使用copiedBuffer方法将statusUpdate变量写入ChannelBuffer之前,我想先查看向上游传递到其他代码的statusUpdate变量中的内容。

因此,代码描述如下,在该代码中有一个在trait中定义的方法,该trait又被混合到其他类中:

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,用于不同的目的