當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Elixir Registry.lookup用法及代碼示例


Elixir語言中 Registry.lookup 相關用法介紹如下。

用法:

lookup(registry, key)
(從 1.4.0 開始)
@spec lookup(registry(), key()) :: [{pid(), value()}]

registry 中查找給定 key{pid, value} 對,順序不限。

如果沒有匹配項,則為空列表。

對於唯一的注冊表,單個分區查找是必要的。對於重複的注冊表,必須查找所有分區。

例子

在下麵的示例中,我們注冊當前進程並從自身和其他進程中查找它:

iex> Registry.start_link(keys: :unique, name: Registry.UniqueLookupTest)
iex> Registry.lookup(Registry.UniqueLookupTest, "hello")
[]
iex> {:ok, _} = Registry.register(Registry.UniqueLookupTest, "hello", :world)
iex> Registry.lookup(Registry.UniqueLookupTest, "hello")
[{self(), :world}]
iex> Task.async(fn -> Registry.lookup(Registry.UniqueLookupTest, "hello") end) |> Task.await()
[{self(), :world}]

這同樣適用於重複的注冊表:

iex> Registry.start_link(keys: :duplicate, name: Registry.DuplicateLookupTest)
iex> Registry.lookup(Registry.DuplicateLookupTest, "hello")
[]
iex> {:ok, _} = Registry.register(Registry.DuplicateLookupTest, "hello", :world)
iex> Registry.lookup(Registry.DuplicateLookupTest, "hello")
[{self(), :world}]
iex> {:ok, _} = Registry.register(Registry.DuplicateLookupTest, "hello", :another)
iex> Enum.sort(Registry.lookup(Registry.DuplicateLookupTest, "hello"))
[{self(), :another}, {self(), :world}]

相關用法


注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Registry.lookup(registry, key)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。