我非常喜欢函数式编程,我确实知道模式匹配和多重分派,这就是我发现谓词分派的方式,并且一直想知道它是否与模式匹配有关。
我确实读过这个 SO 线程:什么是 Predicate Dispatch,但仍然无法得到关于模式匹配和谓词调度之间关系的答案。我相信模式匹配和谓词调度确实是相似的,如果不是等同的,但想听听一些意见。
考虑这个 Elixir 代码:
def function(%{a_flag: True}=struct) do
# do smth
end
def function(struct) when is_nil(struct.field) do
# do smth else
end
def function(struct) do
# default case
end
看起来函数是在运行时根据输入参数的属性选择的,这正是谓词调度的内容。该when
部分看起来类似于本文中提出的谓词调度方式:http ://web.cs.ucla.edu/~todd/research/oopsla04.pdf
请分享您对此事的知识/意见。