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

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

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

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

这是可行的吗?还是我应该采取另一种方式?

点赞
用户2604672
用户2604672

这应该正如你所期望的那样工作。在 Lua 中,如果字符串的内容相等,'==' 将返回 true。

正如评论中指出的那样,Lua 字符串是内部化的,这意味着任何具有相同值的两个字符串实际上是相同的字符串。

2014-12-24 08:48:44
用户869951
用户869951

根据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'。

2014-12-24 14:19:38
用户2060502
用户2060502

在学习 Lua 时需要考虑的一件事(来自 www.lua.org/source/5.2/lstring.h.html):

/*
** 由于所有字符串都被内部化,因此字符串相等性变为指针相等性
*/
#define eqstr(a,b)      ((a) == (b))

Lua 中的字符串比较是廉价的,但字符串创建可能不是廉价的。

2014-12-24 20:03:32
用户17712919
用户17712919

在 Lua 中,如上所述,'==' 检查相等性。并不是说你做了这件事,因为你没有,但常见的错误是认为 '=' 是相等性。'=' 是赋值,'==' 是相等性。

2021-12-29 10:10:13