Scala: Как мне написать тип функции, которую принимает sortBy? - PullRequest
4 голосов
/ 20 января 2012

Я хочу передать параметр, который List.sortBy принимает через другую функцию. Мой код выглядит примерно так:

//Scala
def sortAndMore(list: List[(String, _)], sortFn: Option[???] = None) = {
  val maybeSortedList = sortFn match {
    case None => list
    case Some(fn) => list.sortBy(fn)
  }
  // do some more stuff with this list
}

val myList = ("one", 1)::("three", 3)::("two", 2)::Nil
sortAndMore(myList, Some(_._1 /*???*/)) 

Итак, в конце я хочу получить тот же результат, что и это:

myList.sortBy(_._1)

Каков тип Option в функции sortAndMore?

API Scala для scala.collection.immutable.List говорит следующее:

def sortBy [B] (f: (A) ⇒ B)(implicit ord: Ordering[B]): List[A] 

Я попробовал несколько вещей, но я просто не знаю правильный синтаксис, и мне не повезло, что он угадал. Любые подсказки очень ценятся, особенно с указанием на то, почему синтаксис должен быть таким.

1 Ответ

2 голосов
/ 20 января 2012

Вот мое решение (компилируется на моем терминале)

def sortAndMore(list: List[(String,_)], sortFn: Option[((String,_))=>String] = None) = {
  val maybeSortedList = sortFn match {
    case Some(fn) => list.sortBy(fn)
    case None => list
  }
}

sortAndMore(myList, Some(_._1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...