加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Scala:我如何编写sortBy所具有的函数类型?

发布时间:2020-12-16 08:47:08 所属栏目:安全 来源:网络整理
导读:我想将List.sortBy接受的参数传递给另一个函数.我的代码看起来像这样: //Scaladef sortAndMore(list: List[(String,_)],sortFn: Option[???] = None) = { val maybeSortedList = sortFn match { case None = list case Some(fn) = list.sortBy(fn) } // do
我想将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)

sortAndMore函数中的Option类型是什么?

Scala API for scala.collection.immutable.List说:

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

我尝试了几件事,但我只是不知道正确的语法,并且猜测它并不幸运.任何提示都非常受欢迎,特别是指向为什么语法必须如此.

解决方法

这是我的解决方案(在我的终端上编译)

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))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读