Lua base type()

作者: AlbertS | 来源:发表于2017-09-02 11:59 被阅读176次
类型.jpg

前言

今天学习的这个函数在lua中绝对很常用,用来查询当前变量是什么类型,有点反射机制的意思。那么知道变量是什么类型有什么用呢?比如我们必须知道一个变量是table类型,才能通过key来访问table中的值,否则是要出问题的!

内容


type

  • type(v)
  • 解释:这个函数只有一个参数,调用后会返回这个参数类型所对应的字符串,这些类型字符串包括"nil", "number", "string", "boolean", "table", "function", "thread" 和 "userdata"。另外这个参数是必须给的,不然会报错误:"bad argument #1 to 'type' (value expected)"。

usage

  • 首先我们新建一个文件将文件命名为typefunctest.lua然后编写代码如下:
-- 定义一个局部table
local information =
{
    name = "AlbertS",
    age = 22,
    married = false,
    test = function () print("test") end,
    weight = 60.2,
}

print("phone type:", type(information.phone))
print("name type:", type(information.name))
print("age type:", type(information.age))
print("married type:", type(information.married))
print("test type:", type(information.test))
print("weight type:", type(information.weight))


-- 利用type定义函数
function isnil(var)
    return type(var) == "nil"
end

function istable(var)
    return type(var) == "table"
end


print("\nuse function:")
if isnil(information.phone) then
    print("information.phone is nil")
end

if istable(information) then
    print("my age is", information.age)
end
  • 运行结果
base_type.png

总结

  • 在lua的编程中要尽可能的使用局部变量,比如例子中的local information
  • 通过对表information各个变量的类型进行打印,我们逐渐明白了type函数的用法。
  • type函数通常会被封装起来,类似于例子中的isnilistable函数,这样使用起来更加方便。
  • 还有一点需要注意的是"userdata"和"lightuserdata"类型只能在C/C++中创建,并且在使用type函数时统一返回"userdata"。

相关文章

  • Lua base type()

    前言 今天学习的这个函数在lua中绝对很常用,用来查询当前变量是什么类型,有点反射机制的意思。那么知道变量是什么类...

  • [code.openresty] Openresty指令集-上

    指令集 lua_capture_error_log lua_use_default_type lua_malloc...

  • [lua source code] object system

    版本号:Lua 5.3 Lua Type lua 的类型定义在lobject.h这个文件里,主要的类型如下: no...

  • Lua base tonumber()

    前言 重新开始更新的第一天,我们来聊一个轻松一点的函数,tonumber()这是个将指定参数转换成数字的函数,利用...

  • Lua base tostring()

    前言 前面一篇文章我们介绍了把参数转换成数字的函数,今天来看一个把参数转换成字符串的函数,话说这个函数我在写lua...

  • Lua base setfenv()

    前言 今天来这个函数是用来设置当前运行环境的,也就是和我们之前讲过的getfenv函数是相关的,当时在学习getf...

  • Lua base select()

    前言 今天这个函数看到的时候,第一印象就是想到了c语言中大名鼎鼎的select函数,因为他们函数名是一样的,并且l...

  • Lua base setmetatable()

    前言 记得原来我们总结过一个查询元表的函数getmetatable(), 但是有查询必然会有设置,今天我们就一起来...

  • Lua base pcall()

    前言 作为苦逼的程序猿大周末的时候也必须不能忘记学习,今天我们来看一个调用其他函数的函数,这个函数其实就是给其他函...

  • Lua base rawequal()

    前言 今天这个函数看起来非常的简单,但是却花费了我很长的时间,作用就是比较一下两个值是不是相等,那么时间花在哪了呢...

网友评论

  • 咸鱼佬:local url, page = next(AlbertS)
    if url then
    read(page)
    else
    kick(AlbertS)
    end

本文标题:Lua base type()

本文链接:https://www.haomeiwen.com/subject/cvqwlxtx.html