有没有办法在函数中注释掉一行或多行代码?
类似于以下内容
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
答案 0 :(得分:21)
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
答案 1 :(得分:2)
我远非专家,但我不认为这个答案适用于所有情况。如果多行字符串位于函数的末尾,则它将作为函数的结果返回。所以我认为以下对答案代码的重新排序失败了(或者至少没有按预期运行)。它返回"a = \"old code\"\na = \"more old code\"\n"
。另请注意,do
行的答案中缺少defmodule
。最后,使用"""
进行多次评论的代码会产生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
代码来阻止Emacs中的一个部分与#
对齐(如果它还没有在Elixir模式包中)。