【发布时间】:2018-03-06 15:47:52
【问题描述】:
我需要编写一个对Seq[T] 对象执行排序的通用代码。我知道在我们知道base class 及其attributes 之前,它不可能执行排序操作。在查看了answer 之后,我使用了这段代码,我的要求是处理尽可能多的自定义数据类型。
case class Country(name: String, id : Int)
type CountrySorter = (Country, Country) => Boolean
def byName : CountrySorter = (c1:Country, c2:Country) => c1.name < c2.name
def byId : CountrySorter = (c1:Country, c2:Country) => (c1.id < c2.id)
val sortingMap = Map[String, CountrySorter](
"sortByCountryName" -> byName ,
"soryByCountryId" -> byId
)
函数调用
def sort[T]( input : Seq[T], criteria : String) : Seq[T] = {
input.sortWith(sortingMap(criteria))
}
input.sortWith(sortingMap(criteria)) 在这里我收到错误,因为 sortWith 函数只采用 Country 类型而不是 T 类型。
【问题讨论】:
标签: scala