Erlang 中的“when”保留字

发布于 2024-10-01 22:24:39 字数 402 浏览 2 评论 0原文

今天早上我开始尝试弄清楚 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酷炫老祖宗 2024-10-08 22:24:40

Erlang 中的 when 是子句的保护。这涉及到 Erlang 内置的模式匹配。您的示例必须是:

when_version(Size) when Size > 10 -> 
    do_larger();
when_version(Size) when Size < 10 -> 
    do_smaller().

请参阅 保护序列函数声明语法在参考中。

有关教程,请阅读 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:

when_version(Size) when Size > 10 -> 
    do_larger();
when_version(Size) when Size < 10 -> 
    do_smaller().

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文