【问题标题】:Is there any way to comment out line(s) of code in function in Elixir有没有办法注释掉 Elixir 函数中的代码行
【发布时间】:2015-07-29 04:24:17
【问题描述】:

有没有办法注释掉函数中的一行或多行代码?

类似下面的东西

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

【问题讨论】:

  • 投反对票。从字面上看,谷歌上“长生不老药注释语法”的第一个结果正是讨论了这个问题。似乎真的付出了零研究努力。
  • @OnorioCatenacci 我主要在 elixir-lang.org 上搜索,但无法找到答案。我认为“评论”对于谷歌来说非常模糊,对于长生不老药它一直返回文档评论的东西。

标签: elixir


【解决方案1】:

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

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

形式上,没有办法有一个多行注释,但一个多行字符串最终会成为一个 noop。

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

【讨论】:

    【解决方案2】:

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

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

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

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

    您可以使用 this question 中的宏,但这会稍微“污染”代码。

    我在 Google 上搜索了一下,但找不到合适的答案(也许我遗漏了一些明显的东西),所以我将破解一些 elisp 代码,通过在每一行前面加上#(如果它不在 Elixir 模式包中)。

    【讨论】:

    • @AI:在 emacs 中注释掉一段代码已经是(实际上)任何支持的语言的标准功能。标记区域(CTRL-SPACE在开头,到区域末尾);然后执行M-x comment-region )。
    猜你喜欢
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 1970-01-01
    • 2013-07-11
    • 2010-09-12
    • 1970-01-01
    • 2017-02-28
    相关资源
    最近更新 更多