'when' erlang中的保留字

mum43rcc  于 2022-12-08  发布在  Erlang
关注(0)|答案(1)|浏览(231)

今天早上我开始试着弄清楚“when”语句在Erlang中的作用。我知道下面的例子是错误的:

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中是如何使用的?

eanckbw9

eanckbw91#

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教程顺便说一句。

相关问题