我今天早上开始尝试找出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中使用?
答案 0 :(得分:17)
在erlang中的时间是一个条款的守卫。这涉及到erlang内置的模式匹配。你的榜样必须是:
when_version(Size) when Size > 10 ->
do_larger();
when_version(Size) when Size < 10 ->
do_smaller().
参考参考资料中的Guard Sequences和Function Declaration Syntax。
有关教程,请阅读Guards, Guards!中的Learn You Some Erlang for Great Good,这是一个很棒的在线Erlang教程BTW。