Elixir語言中 Registry.count_match
相關用法介紹如下。
用法:
count_match(registry, key, pattern, guards \\ [])
(從 1.7.0 開始)
@spec count_match(registry(), key(), match_pattern(), guards()) :: non_neg_integer()
返回 registry
中給定 key
下與 pattern
匹配的 {pid, value}
對的數量。
Pattern 必須是與注冊表中存儲的值的結構相匹配的原子或元組。原子:_
可用於忽略給定值或元組元素,而原子:"$1"
可用於將部分模式臨時分配給變量以供後續比較。
可選地,可以傳遞保護條件列表以進行更精確的匹配。每個守衛都是一個元組,它說明了應該由模式的指定部分通過的檢查。例如,$1 > 1
保護條件將表示為 {:>, :"$1", 1}
元組。請注意,保護條件僅適用於已分配的變量,如 :"$1"
、 :"$2"
等。避免使用特殊匹配變量 :"$_"
和 :"$$"
,因為它可能無法按預期工作。
如果沒有匹配,將返回零。
對於唯一的注冊表,單個分區查找是必要的。對於重複的注冊表,必須查找所有分區。
例子
在下麵的示例中,我們在重複注冊表中的相同鍵下注冊當前進程,但具有不同的值:
iex> Registry.start_link(keys: :duplicate, name: Registry.CountMatchTest)
iex> {:ok, _} = Registry.register(Registry.CountMatchTest, "hello", {1, :atom, 1})
iex> {:ok, _} = Registry.register(Registry.CountMatchTest, "hello", {2, :atom, 2})
iex> Registry.count_match(Registry.CountMatchTest, "hello", {1, :_, :_})
1
iex> Registry.count_match(Registry.CountMatchTest, "hello", {2, :_, :_})
1
iex> Registry.count_match(Registry.CountMatchTest, "hello", {:_, :atom, :_})
2
iex> Registry.count_match(Registry.CountMatchTest, "hello", {:"$1", :_, :"$1"})
2
iex> Registry.count_match(Registry.CountMatchTest, "hello", {:_, :_, :"$1"}, [{:>, :"$1", 1}])
1
iex> Registry.count_match(Registry.CountMatchTest, "hello", {:_, :"$1", :_}, [{:is_atom, :"$1"}])
2
相關用法
- Elixir Registry.count用法及代碼示例
- Elixir Registry.lookup用法及代碼示例
- Elixir Registry.unregister_match用法及代碼示例
- Elixir Registry.register用法及代碼示例
- Elixir Registry.values用法及代碼示例
- Elixir Registry.put_meta用法及代碼示例
- Elixir Registry.keys用法及代碼示例
- Elixir Registry.start_link用法及代碼示例
- Elixir Registry.unregister用法及代碼示例
- Elixir Registry.delete_meta用法及代碼示例
- Elixir Registry.meta用法及代碼示例
- Elixir Registry.select用法及代碼示例
- Elixir Registry.update_value用法及代碼示例
- Elixir Registry.match用法及代碼示例
- Elixir Registry用法及代碼示例
- Elixir Regex.run用法及代碼示例
- Elixir Regex.names用法及代碼示例
- Elixir Regex.named_captures用法及代碼示例
- Elixir Regex.match?用法及代碼示例
- Elixir Regex.escape用法及代碼示例
- Elixir Regex用法及代碼示例
- Elixir Regex.compile用法及代碼示例
- Elixir Regex.split用法及代碼示例
- Elixir Regex.source用法及代碼示例
- Elixir Regex.replace用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Registry.count_match(registry, key, pattern, guards \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。