たとえば、JsNumber
とJsString
の場合は全く同じlessThan
関数を使用しました。スカラーでさまざまなタイプの引数に同じ関数を組み合わせる方法
def ltNum(left: JsNumber, right: JsNumber, order: SortOrder.Value): Boolean = {
if (left.value < right.value) {
order == SortOrder.ASC
} else {
order == SortOrder.DSC
}
}
def ltStr(left: JsString, right: JsString, order: SortOrder.Value): Boolean = {
if (left.value < right.value) {
order == SortOrder.ASC
} else {
order == SortOrder.DSC
}
}
これらの2つの機能はまったく同じですが、入力引数の種類は同じです。 JsNumber
およびJsString
は、JsValue
から延在するライブラリplay-json
からのものである。しかし、value
と<
はスーパーの特性の一部ではありません。 1つの一般的な機能にこれらを組み合わせるための良いアイデアですか?
opは実際にそれらの2つのために順序付けを実装し、スコープに入れる必要がある。 –
@Łukaszうーん...何らかの理由で私はすでに存在していると思った。更新しました。 –
私はそれが存在するかどうかはわかりませんが、たとえそれが言及されていなくても、質問への答えは実際には:「タイプ・クラスを使用する」ことで、OPのために何が起こっているのかを理解するのがより簡単になります。 –