如何在 Elixir 中使用模运算符?
例如,在 Ruby 中你可以这样做:
5 % 2 == 0
它与 Ruby 的模运算符有何不同?
对于整数,使用Kernel.rem/2 https://hexdocs.pm/elixir/Kernel.html#rem/2:
iex(1)> rem(5, 2)
1
iex(2)> rem(5, 2) == 0
false
来自文档:
计算整数除法的余数。
rem/2
使用截断除法,这意味着结果将始终
有 的 标志dividend
.
提出一个ArithmeticError
如果参数之一不是一个例外
整数,或者当divisor
is 0.
与 Ruby 相比,主要区别似乎是:
-
rem
只适用于整数,但是%
根据数据类型完全改变其行为。
- Elixir 中负股息的符号为负(与 Ruby 的相同)remainder https://ruby-doc.org/core-2.6.1/Integer.html#method-i-remainder):
Ruby:
irb(main):001:0> -5 / 2
=> -3
irb(main):002:0> -5 % 2
=> 1
irb(main):003:0> -5.remainder(2)
=> -1
Elixir:
iex(1)> -5 / 2
-2.5
iex(2)> rem(-5, 2)
-1
长生不老药的rem
只使用Erlang的rem
, so 这个相关的 Erlang 问题 https://stackoverflow.com/questions/353224/how-do-you-do-modulo-or-remainder-in-erlang可能也有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)