【问题标题】:How does one override the . operator in elixir?如何覆盖 .长生不老药中的运算符?
【发布时间】:2016-03-27 11:10:21
【问题描述】:

我正在尝试覆盖 elixir 中的 .(点)运算符。我能够覆盖其他二元运算符(例如defmacro a + b do 可以很好地覆盖+),但是当我尝试用defmacro a . b do 覆盖. 时,我收到以下错误: defmacro a.b() 中的语法无效

有人知道覆盖. 的正确语法吗?我试图找到实现点访问地图的代码,但没有成功。

【问题讨论】:

  • 作为一名前 C++ 开发人员,重写内置运算符无论如何都是非常危险的。应该是最后的手段而不是第一种方法。

标签: macros operator-overloading elixir


【解决方案1】:

.(点)运算符是special form

来自docs

特殊形式是 Elixir 的基本组成部分,因此 不能被开发者覆盖。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多