2017-01-02 5 views
0

Собственно, я написал скрипт 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?

+0

Что вы должны избегать использования '_2'? – Todd

ответ

2

Вы можете написать это:

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

Спасибо, он отлично работает для меня. – sk1007

Смежные вопросы