web-dev-qa-db-fra.com

Booléen à numéroter en Lua

Existe-t-il un moyen d'obtenir 1 avec vrai et 0 avec faux en Lua?.

6
Hell Protection

Vous pouvez combiner les clauses and et or telles que les opérateurs ternaires.

function bool_to_number(value)
  return value and 1 or 0
end
8
hjpotter92

Vous pouvez aussi faire ceci:

bool_to_number={ [true]=1, [false]=0 }

print(bool_to_number[value])

Ou ca:

debug.setmetatable(true, {__len = function (value) return value and 1 or 0 end})

print(#true)
print(#false)
3
lhf

La réponse de hjpotter92 prend toute valeur différente de nil en tant que valeur vraie (retourne 1). Cela prend plutôt la valeur true ou false.

local value = true
print(value == true and 1 or value == false and 0)
-- we add the false check because it would drop 0 in case it was nil

Si vous voulez utiliser une fonction à la place, ce serait ça

local value = true
local function bool_to_number(value)
 return value == true and 1 or value == false and 0
end

print(bool_to_number(value))
1
ShaH