24

List または Seq の (単一の) ヘッド要素とリストの (コレクション) テールを取得するメソッドは scala にありますか? 私は知っている

def splitAt(n: Int): (List[A], List[A])

タプルの最初のリストから単一のアイテムを簡単に取得できます。しかし、基本的にこれである組み込みメソッドはありますか?

def splitAtHead: (Option[A], List[A])

私が言ったように、チェーンsplitAtして正しい署名を返すことは簡単にできますが、組み込みメソッドで中間タプルを保存できる可能性があると考えました。

編集:

@ om-nom-nom の答えは正しいですが、これが彼の 2 番目のバージョンを使用できなかった理由です。

List[S](s1, s2, s3, s4).sortBy { _.f (h) } match {
    case hd :: tail => recurse(tail)
}
4

2 に答える 2

42

パターン マッチングを使用できます。

val hd::tail = List(1,2,3,4,5)
//hd: Int = 1
//tail: List[Int] = List(2, 3, 4, 5) 

または単に .head/.tail メソッド:

val hd = foo.head
// hd: Int = 1
val hdOpt = foo.headOption
// hd: Option[Int] = Some(1)
val tl = foo.tail
// tl: List[Int] = List(2, 3, 4)
于 2013-02-11T00:09:39.380 に答える