有什么方法可以注释掉 Elixir 中函数中的代码行

Is there any way to comment out line(s) of code in function in Elixir

有什么方法可以注释掉函数中的一行或多行代码吗?

类似下面的内容

defmodule MyModule
  def foo do
    //a = "old code"
    a = "new code"
  end
end

defmodule MyModule
  def foo do
    /*a = "old code"
    b = 1234 */
    a = "new code"
  end
end

Elixir 中的注释,在可用作脚本语言的语言中很常见,使用井号。

defmodule MyModule
  def foo do
    # a = "old code"
    a = "new code"
  end
end

形式上,没有办法进行多行注释,但多行字符串最终会成为空话。

defmodule MyModule
  def foo do
    """
    a = "old code"
    a = "more old code"
    """
    a = "new code"
  end
end

我远不是专家,但我不认为这个答案适用于所有情况。如果多行字符串位于函数的末尾,它将作为函数的结果返回。所以我认为以下对答案代码的重新排序失败了(或者至少没有按预期运行)。它returns"a = \"old code\"\na = \"more old code\"\n"。另请注意,defmodule 行的答案中缺少 do。最后,对多个注释使用 """ 的代码将生成 unused literal 错误(而 ''' 不会)。

defmodule MyModule do
  def foo do
    a = "new code"
    """
    a = "old code"
    a = "more old code"
    """
  end
end

那么,如果多行注释技术不起作用(在所有情况下),我们应该如何屏蔽一段代码?

您不能设置属性(例如 @comment """... 在函数内),这样将不起作用。

您可以像 那样使用宏,但是 "pollutes" 代码有点。

我在 Google 上搜索了一下,找不到合适的答案(也许我遗漏了一些明显的东西)所以我会破解一些 elisp 代码来屏蔽 Emacs 中的一个部分在每一行前面加上 #(如果它还没有在 Elixir 模式包中)。