【发布时间】:2018-09-18 05:55:31
【问题描述】:
我有一个任意大小的结构列表。
我们称之为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 上,我有一个模型 post 和 has_many 与 images 的关系。给定的用户可以上传多张图片,我想进行模式匹配以确保在这种情况下我使用的是正确的结构 (%Plug.Upload{})。
非常感谢任何帮助。谢谢:)
【问题讨论】:
标签: elixir