Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何获取DynamicRecord字段值,使用该值进行匹配,然后更新DynamicRecord_Scala_Aws Glue - Fatal编程技术网

Scala 如何获取DynamicRecord字段值,使用该值进行匹配,然后更新DynamicRecord

Scala 如何获取DynamicRecord字段值,使用该值进行匹配,然后更新DynamicRecord,scala,aws-glue,Scala,Aws Glue,新的Scala与AWS胶水。我要做的是在动态记录中获取一个字段的值,这样我就可以使用它来匹配,然后更新记录,然后返回它 在下面的代码中,我想首先使用以下命令获取字段值:rec=>rec.getField(col) 因此,我可以在继续匹配之前测试该值 这是我目前拥有的,它按原样工作 def doSomething(col: String): DynamicRecord => DynamicRecord = { rec => rec.getFi

新的Scala与AWS胶水。我要做的是在动态记录中获取一个字段的值,这样我就可以使用它来匹配,然后更新记录,然后返回它

在下面的代码中,我想首先使用以下命令获取字段值:
rec=>rec.getField(col)

因此,我可以在继续匹配之前测试该值

这是我目前拥有的,它按原样工作

    def doSomething(col: String): DynamicRecord => DynamicRecord = 
    { 
     
      rec => rec.getField(col) match 
      {
        case Some(s: String) => 
        {
           //do something with s to the record (rec)
        }
        case default => do something with default case to the record (rec)
      }
      rec
    }
注意,由于我直接使用
rec
进行匹配,因此我可以进一步更新它

但我需要先获取值,然后匹配,最后返回更改的记录。下面类似的东西。但是因为我使用字段值进行匹配,所以我不再引用案例中的
rec

    def doSomething(col: String): DynamicRecord => DynamicRecord = 
    { 
      var fldVal: String = ""
      rec => fldVal = rec.getField(col)

      fldVal match 
      {
        case Some(s: String) => 
        {
           //do something to the record with s
        }
        case default => //do something to the record with default case
      }
      rec //need to return record here
    }
如何首先从rec获取字段值,然后引用rec,以便更改并返回它

我收到的错误有,缺少参数类型,类型不匹配

谢谢你的帮助


谢谢

你的描述有点混乱。看起来你想要的是这样的东西

def doSomething(col: String): DynamicRecord => DynamicRecord =
  rec => {
    rec.getField(col) match {
      case Some(s: String) =>
        //do something to the record with s
      case default =>
        //do something to the record with default case
    }
    rec //need to return record here
  }
如果是这样的话,我可能会建议进行以下简化

def doSomething(col: String): DynamicRecord => DynamicRecord =
  rec => rec.getField(col).fold {
    //return rec modified with default case
  } { s =>
    //return rec modified with s
  }