значение параметра Map scala на основе ключа - PullRequest
0 голосов
/ 26 мая 2020

У меня есть следующее:

 val dynamoItem = rowAsMap.mapValues {
  v: Any => new AttributeValue().withS(v.toString)
}.asJava

Я хочу изменить функцию mapValues ​​и заставить ее применять соответствующую функцию к значению на основе ключа

Итак, если ключ равен "AER" Я хочу, чтобы это было: v: Any => new AttributeValue().withN(v.toString)

и для других значений ключа, которые я хотел сделать

 v: Any => new AttributeValue().withS(v.toString)

Ответы [ 2 ]

2 голосов
/ 26 мая 2020

Я бы по возможности избегал нотации x._n для доступа к элементам кортежа. По сути, это тот же ответ, что и выше, но я считаю его более читаемым.

val dynamoItem = rowAsMap.map { 
  case("AER", value) => "AER" -> new AttributeValue().withN(value.toString)
  case (key, value) => key -> new AttributeValue().withS(value.toString)
}

Примечание. Я предполагаю, что вы сохраняете ключи и заменяете значения на new AttributeValue().withN(value.toString) или new AttributeValue().withS(value.toString)

1 голос
/ 26 мая 2020

Если я понимаю, вы хотите преобразовать значения rowAsMap (которые являются значениями Map ()).

val dynamoItem = rowAsMap.map { item =>
  if (item._1 == "AER") 
     new AttributeValue().withN(item._2.toString)
  else 
     new AttributeValue().withS(item._2.toString)
}
...