在erlang中`when`保留字

时间:2010-11-10 09:40:09

标签: erlang

我今天早上开始尝试找出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中使用?

1 个答案:

答案 0 :(得分:17)

在erlang中的时间是一个条款的守卫。这涉及到erlang内置的模式匹配。你的榜样必须是:

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

参考参考资料中的Guard SequencesFunction Declaration Syntax

有关教程,请阅读Guards, Guards!中的Learn You Some Erlang for Great Good,这是一个很棒的在线Erlang教程BTW。