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

Scala高阶函数混乱

发布时间:2020-12-16 18:10:07 所属栏目:安全 来源:网络整理
导读:在 Scala中有高阶函数,从我理解的函数返回函数或接受函数的函数. 例如,这是从Int到Int的函数的高阶函数: def highOrderFunc(f: Int = Int) = { ???} 为什么当我用List(1,2,3)调用highOrderFunc时它会编译?从这个签名我虽然我需要通过一个功能…我在这里很
在 Scala中有高阶函数,从我理解的函数返回函数或接受函数的函数.

例如,这是从Int到Int的函数的高阶函数:

def highOrderFunc(f: Int => Int) = {
   ???
}

为什么当我用List(1,2,3)调用highOrderFunc时它会编译?从这个签名我虽然我需要通过一个功能…我在这里很困惑,有人可以解释一下吗?

解决方法

List [A]扩展了Seq [A],它也扩展了PartialFunction [Int,A]:

trait Seq[+A] extends PartialFunction[Int,A]
                      with Iterable[A]
                      with GenSeq[A]
                      with GenericTraversableTemplate[A,Seq]
                      with SeqLike[A,Seq[A]]

并且PartialFunction [Int,A]扩展Function1 [A,B]或(A => B).在你的情况下,A是Int,所以Int => Int是PartialFunction [Int,Int]的父级,它是Seq [Int]的父级,它是List [Int]的父级.

这就是为什么你可以将List [Int]传递为Function1 [Int,Int]或Int =>诠释

(编辑:李大同)

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

    推荐文章
      热点阅读