Lua 5.3 - 整数 - type() - lua_type()

自从Lua5.3后,整数得到了支持。

但是我该怎么做呢:

if type( 123 ) == "integer" then
end

或者

switch( lua_type( L, -1 ) )
{
case LUA_TINTEGER:
    break;
}

因为type()对于整数和实数都会返回"number",而LUA_TINTEGER并不存在,该怎么办?

谢谢。

点赞
用户3586583
用户3586583

在Lua 5.3中,您可以使用 math.tointeger 来检查值是否为整数。http://www.lua.org/manual/5.3/manual.html#pdf-math.tointeger

如果值x可以转换为整数,则返回该整数。否则返回nil。

在C中,您可以使用 lua_isinteger 完成相同的目的。http://www.lua.org/manual/5.3/manual.html#lua_isinteger

如果给定索引处的值为整数(即该值为数字且表示为整数),则返回1;否则返回0。

2016-03-17 14:40:53
用户2726734
用户2726734

在 Lua 5.3 中使用 math.type

如果 x 是整数,则返回"integer",如果它是浮点数,则返回"float",如果 x 不是数字,则返回nil。

2016-03-17 14:41:00
用户10858480
用户10858480

``` -- Lua 5.3 'type' 替换。作者:m2mm4m local typeRaw = type; -- 将 type 函数存储在一个变量中。 local typeNew = function(I_vValue) -- 创建新的 type 函数 local LR_sType; local L_tyRaw = typeRaw(I_vValue); -- 获取原始类型 if L_tyRaw == "number" then -- 如果是数字类型 LR_sType = maths.type(I_vValue); else LR_sType = L_tyRaw; -- 否则保持原始类型 end return LR_sType; end

-- _G.type = typeNew; -- 覆盖全局 type 函数

assert(typeNew(123) == "integer", "Error with 'typeNew'."); -- 确保新的 type 函数正常工作 assert(typeNew(123.456) == "float", "Error with 'typeNew'."); assert(typeNew("123.456") == "string", "Error with 'typeNew'."); assert(typeNew(nil) == "nil", "Error with 'typeNew'.");

2020-01-19 13:20:25