scala – 有状态函数管道
发布时间:2020-12-16 18:21:13 所属栏目:安全 来源:网络整理
导读:代码解释了自己. val s = Seq(1,1,1)val res: Seq[Int] = s.map(...) .check(count how many 1s,if 2 throw Exception) .map(...) 我正在寻找这个检查功能的简单解决方案. 我可以使用map和closure来计算和抛出,但我想要纯粹的功能. 我可以使用过滤器和大小或
代码解释了自己.
val s = Seq(1,1,1) val res: Seq[Int] = s.map(...) .check(count how many 1s,if > 2 throw Exception) .map(...) 我正在寻找这个检查功能的简单解决方案. >我可以使用map和closure来计算和抛出,但我想要纯粹的功能. 如何为管道创建纯粹的有状态检查管道? 解决方法
一种解决方案是模式匹配,因此检查将变为:
> Seq(1,1) match { case ls if (ls.count(_ == 1) <= 2) => ls case _ => throw new Exception("oh no!") } List(1,1): Seq[Int] > Seq(1,1) match { case ls if (ls.count(_ == 1) <= 2) => ls case _ => throw new Exception("oh no!") } java.lang.Exception: oh no! $.<init>(Main.scala:177) $.<clinit>(Main.scala:-1) 可能最好返回Option类型(而不是抛出): > Seq(1,1) match { case ss if (ss.count(_ == 1) <= 2) => Option(ss) case _ => None } None: Option[Seq[Int]] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |