【发布时间】:2016-10-02 22:49:47
【问题描述】:
假设我正在制作一个模块,其中模式匹配是它的大部分功能,例如结构或花哨的 case 语句;有没有办法use Module 可以在其使用的模块的底部 处插入一个子句?这样做的原因是添加,比方说,将捕获与声明的匹配失败的匹配的默认子句。
举一个人为的例子:
defmodule NumberToNumber do
use SwitchLib, default: 0
# import SomeMacros
opt 1, "one"
# convert("one"), do: 1
opt 2, "two"
opt 3, "three"
opt 4, "four"
default 0 <-- Can this be procedurally generated?
# convert(_), do: 0 <-- or this, for that matter,
end
这可能吗,还是我应该以不同的方式解决这个问题?我的后备计划是引用 convert(_) 来尝试 __MODULE__.convert(arg) 本身并独立说明不匹配。
无论如何,编译器是否使上述方法成为可能?
【问题讨论】:
标签: elixir