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

scala案例模式是头等舱吗?

发布时间:2020-12-16 08:55:15 所属栏目:安全 来源:网络整理
导读:是否可以将案例模式作为参数传递给其他函数?像这样的东西: def foo(pattern: someMagicType) { x match { pattern = println("match") }}def bar() { foo(case List(a,b,c))} 解决方法 我认为Kim Stebel的第一个答案接近你想要的. “模式匹配就是这样”在S
是否可以将案例模式作为参数传递给其他函数?像这样的东西:

def foo(pattern: someMagicType) {
  x match {
    pattern => println("match")
  }
}

def bar() {
  foo(case List(a,b,c))
}

解决方法

我认为Kim Stebel的第一个答案接近你想要的. “模式匹配就是这样”在Scala中不是孤立的实体.匹配可以定义为Function1或PartialFunction.

def foo[A,B](x: A)(pattern: PartialFunction[A,B]): Unit =
  if(pattern.isDefinedAt(x)) println("match")

def bar(list: List[String]): Unit =
  foo(list){ case List("a","b","c") => }

测试:

bar(Nil)
bar(List("a","c"))

或者使用组合物:

def foo[A,B]): Unit = {
  val y = pattern andThen { _ => println("match")}
  if (y.isDefinedAt(x)) y(x)
}

(编辑:李大同)

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

    推荐文章
      热点阅读