2017-01-02 9 views
0

実際、私はいくつかのパラメータに基づいて関数をソートしているスカラスクリプトを書いています。以下のコードを見てください。スカラコードをどのようにリファクタリングするのですか?

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の使用を避けたいと考えています。スカラーコードを書き直すには?

私は以下を試しましたが、私は失敗しました。

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

関連する問題