如何在Kotlin中计算表(行*列)结构中每一行的总计?

时间:2018-08-06 11:02:35

标签: kotlin

我有一个(简化的)表结构,定义如下:

1 * * * * python /home/myuser/Desktop/myfile.py 

我现在要计算该网格中每一列的总数,即,需要累积每一行的第data class Column<T>(val name: String, val value: T) data class Row(val data: List<Column<*>>) data class Grid(val rows: List<Row>) 个元素。

2 个答案:

答案 0 :(得分:2)

我的解决方案如下所示。我只是SELECT * FROM accounts where type like '%3%' 数据,然后按列名对​​列值进行分组,然后将其flatMap归为相应的总和。

fold

答案 1 :(得分:1)

我无法提出更好的解决方案。我认为您的确很好,但是我建议您在语法上进行一些改进。

  1. 使用lambda引用
  2. 使用解构语法
  3. 请勿使用when,如果仅测试一种特定类型,请使用安全强制转换运算符(as?),安全呼叫运算符(?)和elvis运算符(:?

private fun calculateTotals(data: GridData) = data.rows
            .flatMap(RowData::data) // 1
            .groupingBy(ColumnsData<*>::column) // 1
            .fold(0.0) { accumulator, (_, value) -> // 2
                accumulator + ((value as? Number)?.toDouble() ?: 0.0) // 3
            }