Elixir的多行评论

Nat*_*ese 25 comments multiline elixir

大多数语言都允许块注释和多行命令.

例如,HTML中的多行注释如下所示:

<!-- 
Warning, brave programmer:
Here be dragons.
-->
Run Code Online (Sandbox Code Playgroud)

在Elixir中,我发现的最接近的事情如下:

http://elixir-lang.org/docs/v1.0/eex/

EEx smartengine <% #comments %>似乎从源头被丢弃,即使它们是多线的.但是,这只是一种解决方法.

Elixir是否具有多行注释功能,或指示编译器从已编译的.beam文件中丢弃文本的方法?

Pat*_*ity 24

Elixir没有多行评论.

然而,一个非常普遍的使用情况多意见是记录模块和功能,以便您可以使用该模块的属性@doc,并@moduledoc连同here文档.

defmodule MyModule do
  @moduledoc """
  This module is great at X
  """

  @doc """
  Frobnicates the given string.
  """
  def frobnicate(s) do
  end
end
Run Code Online (Sandbox Code Playgroud)

  • 这里有一些混乱.文档存储在BEAM文件中,但在加载模块代码时不会加载.它存储在一个特殊的块中,只在需要时加载,类似于抽象代码的存储方式.除此之外,除非明确配置,否则属性也不会存储在BEAM文件中. (6认同)
  • 您可能希望使用`@moduledoc~S"""`和`@doc~S"""`来避免插值. (2认同)

Dim*_*gog 11

宏可以在某种程度上帮助:

defmodule Comment do
  defmacro comment(_text) do
  end
end

defmodule TestComment do
  import Comment

  comment """
  Module
  Comment
  """

  def func do
    comment """
    Function
    Comment
    """
  end
end
Run Code Online (Sandbox Code Playgroud)

  • @NathanBasanese:文本被宏丢弃,因此宏处理后甚至不会在AST中.所以不,它不会进入BEAM文件. (4认同)
  • docp和doc由编译器生成警告。我认为这是迄今为止最好的解决方案。这不是标准做法。 (2认同)

owy*_*gsk 7

我试着用""来快速评论Python代码,而不是把它变成文档

"""
def some_function() do
  some_code    
end
"""
Run Code Online (Sandbox Code Playgroud)

  • 这给出了警告`警告:代码块包含未使用的文字"THESE ARE COMMENTS \n"(删除文字或将其分配给_以避免警告) (4认同)
  • //,嗯,但是它最终会出现在`.beam`文件中吗? (2认同)
  • @mraaroncruz 会分配 `_ = """` 来不显示这些警告吗? (2认同)

Kip*_*Kip 5

您可以简单地将模块属性用于多行注释,而无需宏。我通常使用以下内容来记录/注释私有功能:

@docp """
This is my
multi line
comment
"""
Run Code Online (Sandbox Code Playgroud)

  • 这绝对是进行多行注释的最简单、最干净的方法! (2认同)
  • 警告:模块属性@docp已设置但从未使用过 (2认同)
  • 没有@docp 的只是""" 怎么样? (2认同)