如何重构scala代码?

时间:2017-01-02 18:28:19

标签: java scala

实际上,我写了一个scala脚本,它根据一些参数对函数进行排序。请看下面的代码片段:

object TestTypes {
     type SortFn = ((String, TestMetricFields)) => Double
     case class TestMetricFields(maths: Int, science: Int)
}

trait TestMarks {
   def sName: String
   def getSortFun(): SortFn
}

object TestMarkStudent extends TestMarks {
   override def sName: String= "xxx"
   override def getSortFun(): SortFn = {
      input: (String, TestMetricFields) => input._2.maths + input._2.science
  }
}

在这里,我想避免在上面的代码中使用._2。如何重写scala代码?

我尝试了以下但我失败了。

override def getSortFun(): (String, TestMetricFields) => SortFn = {
     (sName: String, testField: TestMetricFields) => {
        input: (String, TestMetricFields) => 1.0 * testField.maths + testField.science
   }
}

任何人都可以帮助我重构代码而不使用._2吗?

1 个答案:

答案 0 :(得分:2)

你可以这样写:

 override def getSortFun(): SortFn = { case(_, fields) => 
   fields.maths + fields.science
 }