Esiste un modo più pulito per convertire vero -> 1 e false -> 0 che ricorrere aConverti booleano per intero in elisir
if boolean_variable do
1
else
0
end
Esiste un modo più pulito per convertire vero -> 1 e false -> 0 che ricorrere aConverti booleano per intero in elisir
if boolean_variable do
1
else
0
end
Non sono a conoscenza di un costruito in funzione di conversione per questo. Il modo in cui costruisci la tua soluzione dipende da cosa vuoi ottenere. Considerate la vostra applicazione:
def boolean_to_integer(bool) do
if bool, do: 1, else: 0
end
Se vi ricordate che tutti i valori, ad eccezione nil
e false
restituiscono true
nell'ambito di un'espressione condizionale, questo ha l'effetto che
iex> boolean_to_integer(0)
1
Se questo dovrebbe essere un problema , è possibile utilizzare una funzione multi-clausola che accetta solo booleani:
Naturalmente, è possibile tendono questo a proprio piacimento, per esempio accettare interi 0
e 1
così come nil
si può fare:
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
È possibile accorciarlo utilizzando la seguente sintassi, ma poiché non esiste un operatore ternario esplicito nella lingua, se la macro è ancora richiesta.
if boolean_variable, do: 1, else: 0
Fonte: Elixir quick reference
si potrebbe anche fare 'boolean_variable && 1 || 0 '. Non sono sicuro se t è più pulito però :) –
Non intendi tutto, ma 'nil' e' false' valutano 'vero'? –
Sì, lo so ;-) Grazie –