【发布时间】:2021-06-26 00:39:27
【问题描述】:
我非常喜欢函数式编程,我确实知道模式匹配和多重分派,这就是我发现谓词分派的方式,并且一直想知道它是否与模式匹配有关。
我确实阅读了这个 SO 线程:What is 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
请分享您对此事的了解/意见。
【问题讨论】:
-
def function(%{a_flag = True}=struct)首先甚至不是有效的elixir 代码。 -
@AlekseiMatiushkin 对不起,小错字,应该是
def function(%{a_flag: True}=struct)
标签: oop functional-programming pattern-matching elixir multiple-dispatch