如何在Elixir中使用模运算符?
例如在Ruby中,您可以:
5 % 2 == 0
它与Ruby的模运算符有何不同?
使用rem/2
参见:https://hexdocs.pm/elixir/Kernel.html#rem/2所以在Elixir你的例子变成:
rem(5,2) == 0
返回false
顺便说一下你在Elixir中用%
写的东西只是开始评论到行尾。
对于整数,使用Kernel.rem/2
:
iex(1)> rem(5, 2)
1
iex(2)> rem(5, 2) == 0
false
来自文档:
计算整数除法的余数。
rem/2
使用截断除法,这意味着结果将始终具有dividend
的符号。如果其中一个参数不是整数,或者当
ArithmeticError
为0时,则引发divisor
异常。
与Ruby相比的主要差异似乎是:
rem
仅适用于整数,但%
完全根据数据类型更改其行为。remainder
相同):红宝石:
irb(main):001:0> -5 / 2
=> -3
irb(main):002:0> -5 % 2
=> 1
irb(main):003:0> -5.remainder(2)
=> -1
药剂:
iex(1)> -5 / 2
-2.5
iex(2)> rem(-5, 2)
-1
Elixir的rem
只使用Erlang的rem
,所以this related Erlang question也可能有用。
使用Integer.mod/2
,请参阅:https://hexdocs.pm/elixir/Integer.html#mod/2
iex>Integer.mod(-5, 2)
1