如何覆盖。运营商在elixir?
问题描述:
我试图覆盖elixir中的.
(点)运算符。我能够超越其他二元运算符(例如defmacro a + b do
用于覆盖+
正常工作),但是当我尝试重写.
与defmacro a . b do
,我收到以下错误:在defmacro AB() 无效语法如何覆盖。运营商在elixir?
有谁知道覆盖.
的正确语法?我试图找到实现对地图的点访问的代码,但我没有成功。
答
.
(点)运算符是special form。
从docs:
Special forms are the basic building blocks of Elixir, and therefore cannot be overridden by the developer.
说到作为曾经的C++开发者,覆盖内置的运营商是非常危险的反正。应该是最后一招,而不是第一种方法。 –