美文网首页
偏函数中的模式匹配

偏函数中的模式匹配

作者: 抬头挺胸才算活着 | 来源:发表于2021-11-09 11:41 被阅读0次
  • 定义
    偏函数也是一种函数,只不过只有在输入参数更准确的时候才会执行

  • 例子
    second返回输入数组的第二个元素

val second: PartialFunction[List[Int], Option[Int]] = {
case x :: y :: _ => Some(y)
}
  • 原理
    case 是用偏函数实现的,它们都是添加满足的时候才执行对应的代码
    跟普通的函数一样,只不过多了一个用于参数检查的函数isDefinedAt,返回类型为Boolean
val second = new PartialFunction[List[Int], Option[Int]] {
  //检查输入参数是否合格
  override def isDefinedAt(list: List[Int]): Boolean = list match
  {
    case x :: y :: _ => true
    case _ => false
  }
  //执行函数逻辑
  override def apply(list: List[Int]): Option[Int] = list match
  {
    case x :: y :: _ => Some(y)
  }
}
  • 使用
    偏函数不能直接用()调用,因为这会直接调用apply方法,而应该使用applyOrElse:
second.applyOrElse(List(1,2,3), (_: List[Int]) => None)

applyOrElse 方法的逻辑为 if (ifDefinedAt(list)) apply(list) else default

相关文章

  • 偏函数中的模式匹配

    定义偏函数也是一种函数,只不过只有在输入参数更准确的时候才会执行 例子second返回输入数组的第二个元素 原理c...

  • 模式匹配

    模式匹配之字符串 模式匹配之匹配类型 模式匹配之匹配数组、元组、集合 模式匹配之样例类 模式匹配之偏函数

  • 05-隐式转换

    高阶函数 算子/函数/API File 模式匹配 老师 异常捕获 偏函数 其他函数 currying 字符串插值 ...

  • Scala模式匹配及偏函数

    模式匹配公式: 一、代码Demo 二、Scala中的模式匹配处理异常 三、Scala函数

  • lua高级-正则表达式

    模式匹配函数 在string库中功能最强大的函数是: 代码如下: 这些函数都是基于模式匹配的。与其他脚本语言不同的...

  • lua 中的正则表达式

    模式匹配函数 在string库中功能最强大的函数是: 这些函数都是基于模式匹配的。 与其他脚本语言不同的是,Lua...

  • Scala模式匹配&样例类&偏函数

    模式匹配 match不是语句,而是一个表达式,拥有返回值。在match表达式中可以使用任何类型val sign =...

  • Elixir-模式匹配

    模式匹配是 Elixir 很强大的特性,它允许我们匹配简单值、数据结构、甚至函数。 匹配操作符 Elixir 中,...

  • AI编程范式 第6章 构建软件工具(二)

    6.2 模式匹配工具 函数pat-match是为了ELIZA程序特别定制的模式匹配器。随后的程序也需要模式匹配器,...

  • Scala学习笔记七——偏函数

    偏函数和一般函数的区别在与偏函数并不是处理所有的输入,而仅仅只处理与至少一个case匹配的输入。 偏函数的定义有一...

网友评论

      本文标题:偏函数中的模式匹配

      本文链接:https://www.haomeiwen.com/subject/drumzltx.html