Elixir语言中 Kernel.SpecialForms.receive
相关用法介绍如下。
用法:
receive(args)
(宏)
检查当前进程邮箱中是否有与给定子句匹配的消息。
如果没有这样的消息,当前进程会挂起,直到消息到达或等待给定的超时值。
例子
receive do
{:selector, number, name} when is_integer(number) ->
name
name when is_atom(name) ->
name
_ ->
IO.puts(:stderr, "Unexpected message received")
end
如果在给定的超时期限(以毫秒为单位)后未收到消息,则可以给出可选的 after
子句:
receive do
{:selector, number, name} when is_integer(number) ->
name
name when is_atom(name) ->
name
_ ->
IO.puts(:stderr, "Unexpected message received")
after
5000 ->
IO.puts(:stderr, "No message in 5 seconds")
end
即使没有匹配子句,也可以指定 after
子句。给after
的超时值可以是任何计算为允许值之一的表达式:
-
:infinity
- 进程应该无限期地等待匹配的消息,这与不使用 after 子句相同 -
0
- 如果邮箱中没有匹配的消息,将立即超时 -
小于或等于
4_294_967_295
的正整数(0xFFFFFFFF
以十六进制表示) - 应该可以将超时值表示为无符号 32 位整数。
变量处理
特殊形式处理变量的方式与receive/1
特殊宏完全相同。有关更多信息,请查看 case/2
的文档。case/2
相关用法
- Elixir Kernel.SpecialForms.require用法及代码示例
- Elixir Kernel.SpecialForms.case用法及代码示例
- Elixir Kernel.SpecialForms.%{}用法及代码示例
- Elixir Kernel.SpecialForms.for用法及代码示例
- Elixir Kernel.SpecialForms.quote用法及代码示例
- Elixir Kernel.SpecialForms.&expr用法及代码示例
- Elixir Kernel.SpecialForms.<<args>>用法及代码示例
- Elixir Kernel.SpecialForms.{args}用法及代码示例
- Elixir Kernel.SpecialForms.unquote_splicing用法及代码示例
- Elixir Kernel.SpecialForms.%struct{}用法及代码示例
- Elixir Kernel.SpecialForms.import用法及代码示例
- Elixir Kernel.SpecialForms.left . right用法及代码示例
- Elixir Kernel.SpecialForms.alias用法及代码示例
- Elixir Kernel.SpecialForms.try用法及代码示例
- Elixir Kernel.SpecialForms.fn用法及代码示例
- Elixir Kernel.SpecialForms.cond用法及代码示例
- Elixir Kernel.SpecialForms.__aliases__用法及代码示例
- Elixir Kernel.SpecialForms.left :: right用法及代码示例
- Elixir Kernel.SpecialForms.unquote用法及代码示例
- Elixir Kernel.SpecialForms.with用法及代码示例
- Elixir Kernel.SpecialForms.__block__用法及代码示例
- Elixir Kernel.SpecialForms.^var用法及代码示例
- Elixir Kernel.round用法及代码示例
- Elixir Kernel.left / right用法及代码示例
- Elixir Kernel.put_in用法及代码示例
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Kernel.SpecialForms.receive(args)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。