Erlang 中的“when”保留字
今天早上我开始尝试弄清楚 erlang 中 'when' 语句的用途。我知道下面的例子是错误的:
do_larger() ->
io:format("Larger~n").
do_smaller() ->
io:format("Smaller~n").
when_version(Size) ->
when Size > 10 -> do_larger(),
when Size < 10 -> do_smaller().
我决定看看它在 Haskell 中的实现,看看这是否有帮助,但我最终变得更加困惑。
有谁能够向我指出教程(或向我解释)when 语句的用途以及它在 haskell 和/或 erlang 中的使用方式吗?
I started off this morning trying to work out what the 'when' statement is used for in erlang. I know the below example is wrong:
do_larger() ->
io:format("Larger~n").
do_smaller() ->
io:format("Smaller~n").
when_version(Size) ->
when Size > 10 -> do_larger(),
when Size < 10 -> do_smaller().
I decided to look at its implementation in Haskell to see if this would help and I ended up getting even more confused.
Is anyone able to point me at a tutorial (or explain to me) what the when statement is used for and how it's used in haskell and/ or erlang?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Erlang 中的
when
是子句的保护。这涉及到 Erlang 内置的模式匹配。您的示例必须是:请参阅 保护序列 和 函数声明语法在参考中。
有关教程,请阅读 Learn You Some Erlang for Great Good 顺便说一句,这是一个很棒的在线 Erlang 教程。
The
when
in Erlang is a guard on a clause. This regards the pattern matching built into Erlang. Your example must be:See Guard Sequences and Function Declaration Syntax in the reference.
For a tutorial read Guards, Guards! in Learn You Some Erlang for Great Good which is a great online Erlang tutorial BTW.