我有一个元组列表,我想根据元组中的第二个元素进行升序排序.我用这段代码做到了:
freqs.sortWith( _._2 < _._2 )
Run Code Online (Sandbox Code Playgroud)
但我不喜欢._2命名,因为我更喜欢第二个参数的名字freqs.sortWith( _.weight < _.weight )
.任何想法如何做到这一点?
你不需要重复两次sortWith
,你可以使用sortBy(_._2)
.
如果您想拥有一个好名字,请创建一个case
具有此名称成员变量的自定义类:
case class Foo(whatever: String, weight: Double)
val list: List[Foo] = ???
list.sortBy(_.weight)
Run Code Online (Sandbox Code Playgroud)
它只需一行.
或者,您可以在本地"pimp"元组:
class WeightOps(val whatever: String, val weight: Double)
implicit def tupleToWeightOps(t: (String, Double)): WeightOps =
new WeightOps(t._1, t._2)
Run Code Online (Sandbox Code Playgroud)
然后你可以.weight
直接使用元组:
val list: List[(String, Double)] = ???
list.sortBy(_.weight)
Run Code Online (Sandbox Code Playgroud)
不要忘记保持隐含范围尽可能小.
归档时间: |
|
查看次数: |
73 次 |
最近记录: |