例如,對於JsNumber
和JsString
,我有兩個完全相同的函數lessThan
。如何在scala中爲不同類型的參數組合相同的函數
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
}
}
這兩個函數是完全相同的,但輸入參數類型。 JsNumber
和JsString
來自從JsValue
延伸的庫play-json
。但是,value
和<
不是超級特性的一部分。任何將這些結合到一個一般功能的好主意?
op還需要實際爲這兩個實現排序並將其放在範圍內。 –
@Łukasz嗯...出於某種原因,我認爲已經存在... ...好趕上。更新。 –
我不確定它是否存在,但即使它不存在,也值得一提,因爲問題的答案實際上是:「使用類型類」,並且它將更容易理解OP正在進行的操作; p –