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) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |