Domanda

Ho usato questo in altre lingue, ma lua sembra mancare questa funzione piuttosto utile.

Potrebbe uno di voi belle chappies me fornire una funzione di lua per ottenere il segno del numero passato a esso?

È stato utile?

Soluzione

È possibile verificare la sign in questo modo:

i = -2
if i == math.abs(i) then -- or i >= 0
   print "positive"
else
   print "negative"
end

Altri suggerimenti

function math.sign(x)
   if x<0 then
     return -1
   elseif x>0 then
     return 1
   else
     return 0
   end
end

Proprio nel caso qualcuno inciampa su questo :, ecco la mia versione in qualche modo più breve:

function sign(x)
  return x>0 and 1 or x<0 and -1 or 0
end

Credo che l'idea è di ritorno 1 o -1 per rappresentare positivo o negativo. Non credo che si vorrebbe è tornare 0. potrebbe avere effetti disastrosi. Immaginate di provare a cambiare il segno di un valore moltiplicandolo per segno (x) quando ritorna 0. Invece di cambiare il segno che ci si modifica il valore a 0.

mi piacerebbe restare con

function sign(x)
  return (x<0 and -1) or 1
end

È anche possibile ottenere il segno di un numero come questo:

x/ math.abs(x)

mi piacerebbe usare solo quella per gli interi e dal Lua non distingue interi da carri, io non userei in Lua a tutti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top