【问题标题】:Scala accessing list objects and evaluating themScala 访问列表对象并评估它们
【发布时间】:2017-01-10 04:10:22
【问题描述】:

Scala 访问列表对象并评估它们

我有清单

val example = List(ItemDesc(6164,6165,6166,6195,The values are correct), ItemDesc(14879,14879,14879,14894,The values are ok), ItemDesc(19682,19690,19682,19694,The values are good))

从示例列表中,我想访问对象“ItemDesc”。并得到偶数和奇数。

例如取列表中的第一个对象

ItemDesc(6164,6165,6165,6195,数值正确)

我想知道,

evenPlacesCount = 6164+6166

oddPlacesCount = 6165+6195

我有代码来评估它是否是一个普通的列表(6164,6165,6166,6195,这些值是正确的)。

但是,如果我有上面的“示例”之类的 List 对象,如何计算?

【问题讨论】:

  • ItemDesc 的类型是什么?是案例类吗?
  • “我有代码来评估它是否是一个普通的列表”,我想看看你用来评估的代码。

标签: java list scala


【解决方案1】:

这样的?

case class ItemDesc(a: Int, b: Int, c: Int, d: Int, desc: String)
case class Pair(even: Int, odd: Int)

val example = List(
  ItemDesc(6164, 6165, 6166, 6195, "The values are correct"),
  ItemDesc(14879, 14879, 14879, 14894, "The values are ok"),
  ItemDesc(19682, 19690, 19682, 19694, "The values are good")
)

def evenOddCount(item: ItemDesc): Pair = Pair(item.a + item.c, item.b + item.d)
def addEvenOddCounts(first: Pair, second: Pair): Pair = Pair((first.even + second.even), (first.odd + second.odd))

val evenOddPair = evenOddCount(ItemDesc(6164, 6165, 6166, 6195, "The values are correct")) // Pair(12330,12360)
val allPairs = example.map(evenOddCount) // List(Pair(12330,12360), Pair(29758,29773), Pair(39364,39384))
val totalPair = example.map(evenOddCount).reduce(addEvenOddCounts) // Pair(81452,81517)

【讨论】:

  • 非常漂亮的模型!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-19
  • 1970-01-01
  • 2017-01-22
  • 2013-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多