string - separar - ¿Puedo comprobar la igualdad de cadenas en lua?
python separar string por caracter (3)
Solo una pregunta simple para principiantes, estoy codificando cosas de Lua para Garrys Mod, aprendiendo leyendo wiki y otras codificaciones.
if (self.Owner:SteamID( ) == "STEAM_0:1:44037488" ) then
Lo anterior es el código que quiero usar, para verificar si la IDENTIFICACIÓN DE VAPOR (que creo que es una cadena) es igual a mi cadena exacta.
¿Es esto viable? ¿O hay otra forma en que debería hacerlo?
De acuerdo con http://wiki.garrysmod.com/page/Player/SteamID , SteamID()
devuelve una cadena por lo que debería poder escribir
if self.Owner:SteamID() == "STEAM_0:1:44037488" then
...do stuff...
end
Si alguna vez necesita confirmar el tipo de un objeto, use type
e print
, como en este caso print(''type is'', type(self.Owner:SteamID()))
debe imprimir ''type is string''.
Esto debería funcionar exactamente como espera que lo haga. En lua ''=='' para cadena se devolverá verdadero si el contenido de las cadenas es igual.
Como se señaló en los comentarios, las cadenas lua se internan, lo que significa que cualquiera de las dos cadenas que tienen el mismo valor son en realidad la misma cadena.
Una cosa a considerar mientras se aprende Lua (de www.lua.org/source/5.2/lstring.h.html):
/*
** as all string are internalized, string equality becomes
** pointer equality
*/
#define eqstr(a,b) ((a) == (b))
La comparación de cadenas en Lua es barata, la creación de cadenas puede no serlo.