`erlang中的when`保留字

`erlang中的when`保留字,erlang,Erlang,我今天早上开始尝试弄清楚“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().

我今天早上开始尝试弄清楚“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().
do_>
io:格式(“大~n”)。
不要再小一点()->
io:格式(“更小的~n”)。
当版本(大小)->
当尺寸>10->do_Bigger()时,
当尺寸<10->做得更小()。
我决定看看它在Haskell中的实现,看看这是否有帮助,结果我变得更加困惑


有人能告诉我教程(或向我解释)when语句用于什么以及它在haskell和/或erlang中是如何使用的吗?

erlang中的
when
是一个保护子句。这与Erlang中内置的模式匹配有关。你的例子必须是:

when\u版本(大小)when Size>10->
你喜欢大一点的吗;
当尺寸<10->
做得更小一些。
请参阅参考资料中的和


对于阅读的教程,这是一个很棒的在线Erlang教程。顺便说一句。

我对Haskell知道的不多,但在Haskell和Erlang中时,与我在Haskell答案中看到的情况有很大不同。我正在删除Haskell标记,因为这与Haskell没有任何关系。你可以在几乎任何语言中编写一个名为“何时”的函数。可能想考虑将问题重命名为“<代码> Erlang时的< /COD>保留词”或“<代码> < Err/代码> Erlang中的关键字”。Erlang没有语句#PedanticGuards也可以用于case和receive语句。可以在when中用作守卫,也可以用作用例。。函数中的。