gpt4 book ai didi

Elixir:模式匹配特定类型的列表?

转载 作者:行者123 更新时间:2023-12-04 22:55:04 26 4
gpt4 key购买 nike

我有一个任意大小的结构列表。

我们叫它l .
l = [%X{a:1}, %X{a:3}, %X{a:9}, %X{a:11}]l尺寸不断变化。我想知道的是我如何与 l 进行模式匹配确保它总是由 %X{} 的结构组成.如果列表包含其他内容,我希望模式匹配失败。例如:
l = [%X{a:1}, %X{a:3}, %Y{a:9}, %Z{a:11}]
我尝试过的东西

i = %X{}
j = %Y{}

[%X{}|_] = [i,i,i]

但这仅匹配第一个元素。
[%X{}|_] = [i,j,j]

对于我的用例应该失败,但事实并非如此。
也许如果有一个运算符或类似的东西,它将匹配特定类型的列表,这正是我正在寻找的:
[%X{}+] = [i,i,i] # Doesn't exist, just an example

一些背景

我在 phoenix 上,我有一个模型 posthas_manyimages 的关系.给定用户可以上传多张图像,我想进行模式匹配以确保在这种情况下使用正确的结构( %Plug.Upload{} )。

任何帮助深表感谢。谢谢 :)

最佳答案

您不能对列表的每个元素进行模式匹配(没有递归)。在这种情况下,我会使用 Enum.all?/2match?/2宏:

if Enum.all?(list, &match?(%X{}, &1)) do
...
end

关于Elixir:模式匹配特定类型的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52379768/

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