只是一个直接的初学者问题,我正在为Garrys Mod编写Lua的东西,通过阅读维基和其他编码来学习。
if (self.Owner:SteamID( ) == "STEAM_0:1:44037488" ) then
以上是我想要使用的代码,检查STEAM ID(我相信是一个字符串)是否等于我的确切字符串。
这可行吗?或者我还有另一种方法吗?
答案 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/SteamID,SteamID()
会返回一个字符串,因此您应该可以写
if self.Owner:SteamID() == "STEAM_0:1:44037488" then
...do stuff...
end
如果您需要确认对象的类型,请使用type
和print
,例如print('type is', type(self.Owner:SteamID()))
应该打印' type is string'。