在erlang中`when`保留字

Mat*_*tyW 4 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().
Run Code Online (Sandbox Code Playgroud)

我决定在Haskell中查看它的实现,看看这是否会有所帮助,最后我变得更加困惑.

是否有人能够指出我的教程(或向我解释)什么时候使用when语句以及它如何在haskell和/或erlang中使用?

Pee*_*ger 17

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

when_version(Size) when Size > 10 -> 
    do_larger();
when_version(Size) when Size < 10 -> 
    do_smaller().
Run Code Online (Sandbox Code Playgroud)

请参阅参考中的Guard SequencesFunction Declaration Syntax.

有关教程,请阅读Guards,Guards!了解你的一些Erlang for Great Good这是一个很棒的在线Erlang教程BTW.

  • 警卫也可用于案件和接收陈述. (3认同)