【发布时间】:2020-05-16 01:28:08
【问题描述】:
我正在尝试创建以下列表:
["extract-audio", "audio-format", "mp3"]
基于:
options = ["extract-audio", "audio-format": "mp3"]
我的代码从提供的options 移动到首选列表:
arguments = Enum.map(options, fn(option) ->
parametrize(option)
end) |> List.flatten
def parametrize(arg) when is_tuple(arg), do: Tuple.to_list(arg)
def parametrize(arg) when is_binary(arg), do: arg
返回的列表几乎是正确的:
["extract-audio", :"audio-format", "mp3"]
但是,我不太明白audio-format前面的分号在做什么。创建某种正则表达式来代替它感觉有点不对劲。有没有比我目前的实现更好的解决方案?我也考虑过地图,但在某些情况下,我只想要一个参数而不是键值。
【问题讨论】:
-
:"audio-format"看起来像一个原子 -
@JohnColeman 是的,我们可以使用 `Atom.to_String(:"audio-format") 轻松转换它。但我真的不想遍历列表中的所有项目以查看是否需要转换它。
-
使用模式匹配而不是
is_tuple?
标签: elixir