在长生不老药中将布尔值转换为整数
Convert boolean to integer in elixir
有没有比
更简洁的方法来转换 true -> 1 和 false -> 0
if boolean_variable do
1
else
0
end
您可以使用以下语法缩短它,但由于该语言中没有明确的三元运算符,因此仍然需要 if 宏。
if boolean_variable, do: 1, else: 0
我不知道为此内置的转换函数。如何构建自己的解决方案取决于您想要实现的目标。考虑您的实施:
def boolean_to_integer(bool) do
if bool, do: 1, else: 0
end
如果您还记得除 nil
和 false
之外的所有值在条件表达式的上下文中的计算结果为 true
,则其效果为
iex> boolean_to_integer(0)
1
如果这是个问题,您可以使用只接受布尔值的多子句函数:
def boolean_to_integer(true), do: 1
def boolean_to_integer(false), do: 0
iex> boolean_to_integer(0)
** (FunctionClauseError) no function clause matching in MyModule.boolean_to_integer/1
iex:42: MyModule.boolean_to_integer(0)
当然,你可以根据自己的喜好扩展它,例如接受整数 0
和 1
以及 nil
你可以这样做:
def boolean_to_integer(true), do: 1
def boolean_to_integer(false), do: 0
def boolean_to_integer(nil), do: 0
def boolean_to_integer(1), do: 1
def boolean_to_integer(0), do: 0
iex> boolean_to_integer(0)
0
iex> boolean_to_integer(1)
1
有没有比
更简洁的方法来转换 true -> 1 和 false -> 0if boolean_variable do
1
else
0
end
您可以使用以下语法缩短它,但由于该语言中没有明确的三元运算符,因此仍然需要 if 宏。
if boolean_variable, do: 1, else: 0
我不知道为此内置的转换函数。如何构建自己的解决方案取决于您想要实现的目标。考虑您的实施:
def boolean_to_integer(bool) do
if bool, do: 1, else: 0
end
如果您还记得除 nil
和 false
之外的所有值在条件表达式的上下文中的计算结果为 true
,则其效果为
iex> boolean_to_integer(0)
1
如果这是个问题,您可以使用只接受布尔值的多子句函数:
def boolean_to_integer(true), do: 1
def boolean_to_integer(false), do: 0
iex> boolean_to_integer(0)
** (FunctionClauseError) no function clause matching in MyModule.boolean_to_integer/1
iex:42: MyModule.boolean_to_integer(0)
当然,你可以根据自己的喜好扩展它,例如接受整数 0
和 1
以及 nil
你可以这样做:
def boolean_to_integer(true), do: 1
def boolean_to_integer(false), do: 0
def boolean_to_integer(nil), do: 0
def boolean_to_integer(1), do: 1
def boolean_to_integer(0), do: 0
iex> boolean_to_integer(0)
0
iex> boolean_to_integer(1)
1