有没有办法对列表中间的值进行模式匹配?或者最后?
类似 Haskell 之类的东西
getFirstError :: [Either a b] -> a
getFirstError (x:y:...:Left w:z) = w
,但了解其他具有模式匹配的语言如何实现这一点可能会很有趣。
something like
getFirstError :: [Either a b] -> a
getFirstError (x:y:...:Left w:z) = w
wrt Haskell but it might be interesting to know how other languages with pattern matching accomplish this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尽管有其他答案,您可以使用 GHC 中的视图模式扩展来执行此操作:
或者使用模式防护:
You can, despite the other answers, do this using view patterns extension in GHC:
Alternatively using pattern guards:
不,但您可以使用列表理解。
请注意,如果没有错误,
head
将失败。No, but you can use a list comprehension
Note that
head
will fail if there are no errors.不,没有。但是,您可以使用递归轻松编写该函数:
No, there's not. However, you can easiliy write the function using recursion: