J'ai un scénario que j'ai besoin de passer les opérateurs dynamiques dans loadstring
. C'est là que je l'ai trouvé et je ne comprends pas.pourquoi ai-je obtenu un point décimal en utilisant loadstring dans Lua
S'il vous plaît voir la sortie suivante:
> a = '3'
> b = '7'
> operator = '+'
> loadstring("return a" .. operator .. "b")()
10.0 -- Why do I get then with a decimal point.
> loadstring("return 3" .. operator .. 7)()
10 -- But this one is not?
Quelqu'un peut-il expliquer ce qui se passe à l'intérieur loadstring
car je pensais que je devrais obtenir le même résultat?
Vous calculez une expression sur STRINGS (les chaînes sont implicitement converties en nombres à virgule flottante, c'est l'une des caractéristiques étranges de Lua 5.3). Essayez de les convertir manuellement en nombres: 'loadstring (" return tonumber (a) ".. opérateur ..." tonumber (b) ")()' –