gpt4 book ai didi

elixir - 模式匹配空 MapSet

转载 作者:行者123 更新时间:2023-12-01 12:05:26 24 4
gpt4 key购买 nike

给定一个 MapSet,如何使用模式匹配检测它是否为空?

# What goes in the question marks?
def my_func(????), do: IO.puts("This mapset is empty")
def my_func(%MapSet{}), do: IO.puts("This mapset is not empty")

my_func(MapSet.new())

如果这是一个列表,我会在 ([]) 上匹配它,但这不适用于 MapSets(因为类型不同)

这是我尝试过的其他一些事情,但没有成功。
def myfunc([]), do: IO.puts("This only works for lists")
# This is a syntax error
# def myfunc(MapSize.new())

def myfunc(%MapSet{}), do: IO.puts("This matches every mapset")
def myfunc(a) when map_size(a), do: IO.puts("the map size is always 3")

最佳答案

你也可以考虑 the solution I provided for matching against an empty map 如下:

defmodule A do
def empty?(some_map_set = %MapSet{}) do
an_empty_map_set = MapSet.new

some_map_set
|> case do
^an_empty_map_set ->true # Application of pin operator
_ -> false
end
end
end

您可以进行如下测试:
A.empty?(MapSet.new)

A.empty?(MapSet.new([1]))
在该链接中,您可以看到可以相应利用的其他解决方案。
@dogbert 已经提供了一个。
另一种解决方案的工作方式如下:
defmodule A do
@empty MapSet.new
def empty?(some_map_set) when some_map_set == @empty, do: true
def empty?(%MapSet{}), do: false
end

关于elixir - 模式匹配空 MapSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49284613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com