Elixir中的flush/0到底刷新了什么?

问题描述 投票:0回答:2

我仍然是 Elixir 的绝对新手:

我偶然发现了文档中的以下示例

Port
对象:

port = Port.open({:spawn, "cat"}, [:binary])
send(port, {self(), {:command, "hello"}})
send(port, {self(), {:command, "world"}})
flush() 

flush()
如何知道它应该冲洗什么?如果有一个
port.flush()
,我会觉得更容易理解。

我尝试在 Elixir 文档中搜索 flush

 函数
的文档,但我只找到了 StringIO.flush

似乎也没有

Kernel.flush

;至少它没有在 
https://hexdocs.pm/elixir/1.14.5/Kernel.html 中列出。

如果有任何关于该函数定义位置的指针,我将不胜感激。此外,任何有关如何更好地搜索 Elixir 在线文档的建议,我们将不胜感激。

elixir port
2个回答
2
投票

flush/0 是 IEx 的一个实用函数,位于 IEx.Helpers

。您不需要从 
iex
 会话中指定模块名称,因为它将自动导入。它完全按照文档中的说明进行操作:

清除发送到 shell 收件箱的所有消息并将其打印出来。

说到查找文档,这个比较特殊,所以很难找到,不然以后应该是零问题。


0
投票
defmodule A do def add() do 1 + 2 + 3 end def go() do result = add() # How does add() know what to add?? IO.puts(result) end end A.go() #6
    
© www.soinside.com 2019 - 2024. All rights reserved.