我今天早上开始尝试找出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 Sequences和Function Declaration Syntax.
有关教程,请阅读Guards,Guards!在了解你的一些Erlang for Great Good这是一个很棒的在线Erlang教程BTW.