Новая обновленная функция в Elixir 1.6.3

В этой статье говорится, что Elixir 1.6.3 поддерживает комментарии в середине |>, when, |, но вы делаете mix format.

а. Комментарии в середине конвейера

Я предполагаю, что вы пользуетесь Эликсиром версии ‹1.6.3

Создайте файл comment.ex и добавьте в него следующий код

defmodule Comment do
  def square(number), do: number * number
  def cube(number), do: number * number * number
def run(number) do
    number
    # this is square function 
    |> square
    # this is cube function 
    |> cube
    # this is used for inspecting the results
    |> IO.inspect()
  end
end

После добавления содержимого в файл выполните следующую команду

$ mix format comment.ex

Надеюсь, что вы находитесь в той же директории файла comment.ex. Программа форматирования преобразует приведенный выше код в следующий формат.

defmodule Comment do
  def square(number), do: number * number
  def cube(number), do: number * number * number
def run(number) do
    # this is square function 
    # this is cube function 
    # this is used for inspecting the results
    number
    |> square
    |> cube
    |> IO.inspect()
  end
end

Вы заметили, что все комментарии перемещены в начало определения. Но это обновлено в Elixir v1.6.3. Комментарии помещаются в середину конвейера в Elixir v1.6.3

Теперь установите Elixir V1.6.3 и повторите попытку. Он по-прежнему поддерживает эти комментарии в середине конвейера.

б. комментарии в середине | выражения

@spec square integer()::
                    :ok
                    | :invalid
                    # :unknown
                    | :other

c. комментарии в середине, когда

Точно так же мы можем прокомментировать when охранников, как в следующем

Здесь, внутри файла, я добавил еще одну функцию or_gate_truth/2 для демонстрации демо.

#comment.ex
defmodule Comment do
  ...
  def or_gate_truth(x, y)
    #checking x is 1
    when x == 1
    #checking y is 1
    when y ==1 do
    True
  end
end

Однако, если вы отформатируете файл mix format comment.ex, модуль форматирования по-прежнему будет собирать все комментарии в верхней части функции, как в ELixir ‹1.6.3.

defmodule Comment do
  ...
  # checking x is 1
  # cheking y is 1
  def or_gate_truth(x, y)
      when x == 1
      when y == 1 do
    True
  end
end

Но он обновлен в Elixir v1.6.3, он по-прежнему помещает комментарии в середину выражений когда.

Попробуйте, комментируя в середине конвейера, когда, | союзные выражения. Установите Elixir V1.6.3 перед тем, как попробовать

Удачного кодирования :)