3

コレクションに対するいくつかのメソッドの組み合わせは、Scala でより簡潔に表現できます。たとえば、xs.filter(f).headOptionとして表すことができxs.find(f)xs.map.filter通常は でより適切に表現できxs.collectます。

私は自分で を書いていることxs.sortWith(f).headに気づきました。これは、「このソート関数に従って、このコレクション内の最小要素を見つけてください」という単一のメソッドとして表現できるようなものだと私には感じています。

Seqただし、またはの明らかなメソッドは見当たりませんTraversableLike。私の意図を捉える単一の方法はありますか、それとも.sort.head「最小」要素を見つけるためのよりエレガントな方法ですか?

4

1 に答える 1

13
scala> val xs = List("hello", "bye", "hi")
xs: List[java.lang.String] = List(hello, bye, hi)

scala> xs.sortWith(_.length < _.length).head
res10: java.lang.String = hi

scala> xs.min(Ordering.fromLessThan[String](_ > _))
res11: java.lang.String = hi

scala> xs.min(Ordering.by((_: String).length))
res12: java.lang.String = hi

scala> xs.minBy(_.length)
res13: java.lang.String = hi
于 2012-04-24T11:21:03.620 に答える