Есть ли способ прокомментировать строки кода в функции в 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
Ответы
Ответ 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
. Наконец, код с использованием """
для нескольких комментариев будет генерировать ошибку unused literal
(тогда как '''
не будет).
defmodule MyModule do
def foo do
a = "new code"
"""
a = "old code"
a = "more old code"
"""
end
end
Итак, если метод многострочных комментариев не работает (во всех случаях), как мы должны блокировать раздел кода?
Вы не можете установить атрибут (например, @comment """...
внутри функции), чтобы он не работал.
Вы можете использовать макросы, как в этот вопрос, но немного "загрязняет" код.
Я немного искал и не могу найти подходящий ответ (возможно, мне не хватает чего-то очевидного), поэтому я просто взломаю некоторый код elisp
, чтобы заблокировать раздел в Emacs, добавив каждую строку с помощью #
(если он еще не находится в пакете режима Elixir).