实际上,我写了一个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
吗?
答案 0 :(得分:2)
你可以这样写:
override def getSortFun(): SortFn = { case(_, fields) =>
fields.maths + fields.science
}