Elixir中的相等运算符是否有前缀/波兰符号?

Elixir中的相等运算符是否有前缀/波兰符号?,elixir,pointfree,Elixir,Pointfree,我正在学习长生不老药,我决定给自己做的练习之一就是试着用惯用的长生不老药来编写信用卡验证程序 我意识到Elixir中的==是一个内核函数,显然是由编译器内联的。有没有什么实用功能可以让我做这样的事情 ... |> == 0 而不是像我在这里所做的那样,定义一个要导入的函数 长生不老药 defmodule Luhn do def equalzero?(x) x == 0 end def validate(num) do digits = Integer.digits(num

我正在学习长生不老药,我决定给自己做的练习之一就是试着用惯用的长生不老药来编写信用卡验证程序

我意识到Elixir中的
==
是一个内核函数,显然是由编译器内联的。有没有什么实用功能可以让我做这样的事情

...
|> == 0
而不是像我在这里所做的那样,定义一个要导入的函数

长生不老药

defmodule Luhn do
  def equalzero?(x) x == 0 end
  def validate(num) do
    digits = Integer.digits(num)
    len = length digits

    digits
    |> Stream.with_index
    |> Enum.reverse
    |> Enum.reduce(0, fn {digit, index}, acc ->
      if rem(len - index, 2) == 0 do
        acc + digit * 2 |> Integer.digits |> Enum.sum
      else
        acc + digit
      end
    end)
    |> rem(10)
    |> Luhn.equalzero?
  end
end

您可以通过引用这些操作符的完整路径,
Kernel来导入这些操作符(在
Kernel
中定义):

iex(1)> 0 |> Kernel.==(0)
true
iex(2)> 1 |> Kernel.==(0)
false

您可以通过引用这些操作符的完整路径,
Kernel来导入这些操作符(在
Kernel
中定义):

iex(1)> 0 |> Kernel.==(0)
true
iex(2)> 1 |> Kernel.==(0)
false