我可以在lua中检查字符串是否相等?

时间:2014-12-24 07:38:53

标签: string lua comparison equals

只是一个直接的初学者问题,我正在为Garrys Mod编写Lua的东西,通过阅读维基和其他编码来学习。

if (self.Owner:SteamID( ) == "STEAM_0:1:44037488" ) then

以上是我想要使用的代码,检查STEAM ID(我相信是一个字符串)是否等于我的确切字符串。

这可行吗?或者我还有另一种方法吗?

3 个答案:

答案 0 :(得分:27)

这应该与您期望的完全一样。在lua'=='中,如果字符串的内容相等,则返回true。

正如在评论中指出的那样,lua字符串被实现,这意味着任何两个具有相同值的字符串实际上都是相同的字符串。

答案 1 :(得分:4)

学习Lua时要考虑的一件事(来自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))

Lua中的字符串比较便宜,字符串创建可能不是。

答案 2 :(得分:2)

根据http://wiki.garrysmod.com/page/Player/SteamIDSteamID()会返回一个字符串,因此您应该可以写

if self.Owner:SteamID() == "STEAM_0:1:44037488" then
    ...do stuff...
end

如果您需要确认对象的类型,请使用typeprint,例如print('type is', type(self.Owner:SteamID()))应该打印' type is string'。