使用lua实现php的var_dump()函数功能

习惯了php中的var_dump()函数,而如今写lua的时候总习惯使用var_dump()函数,于是就自己动手写了一个类似功能的var_dump()函数。

代码如下:

function var_dump(data, max_level, prefix)  
    if type(prefix) ~= "string" then  
        prefix = "" 
    end  
    if type(data) ~= "table" then  
        print(prefix .. tostring(data))  
    else 
        print(data)  
        if max_level ~= 0 then  
            local prefix_next = prefix .. "    " 
            print(prefix .. "{")  
            for k,v in pairs(data) do 
                io.stdout:write(prefix_next .. k .. " = ")  
                if type(v) ~= "table" or (type(max_level) == "number" and max_level <= 1) then  
                    print(v)  
                else 
                    if max_level == nil then  
                        var_dump(v, nil, prefix_next)  
                    else 
                        var_dump(v, max_level - 1, prefix_next)  
                    end  
                end  
            end  
            print(prefix .. "}")  
        end  
    end  
end

(0)

相关推荐

  • Lua极简入门指南:全局变量

    全局环境 Lua 把全局变量放在一个 table _G 中,这个 table 被叫做全局环境(global environment).打印所有的全局变量名: 复制代码 代码如下: for n in pairs(_G) do print(n) end _ENV(Lua 5.2 开始支持) 对于一个 free name(名字没有绑定任何声明)var 实际上会被转换为 _ENV.var(每个 chunk 中都会存在一个名为 _ENV 的变量): 复制代码 代码如下: v1 = 1 local v2 =

  • Lua极简入门指南(六):模块

    从用户的角度来看,一个模块能够通过 require 加载并返回一个 table,模块导出的接口都被定义在此 table 中(此 table 被作为一个 namespace).所有的标准库都是模块.标准库被预先加载了,就像这样: 复制代码 代码如下: math = require 'math' string = require 'string' require 函数 使用 require 函数加载模块能够避免多次重复加载模块.加载一个模块: 复制代码 代码如下: require 'modulena

  • Lua中实现StringBuffer功能

    在Lua中,字符串是一个常量,如果用字符串连接符".."把2个字符串连接起来,例如first_str = first_str .. second_str,那么原来的first_str和second_str就会作为垃圾等待回收,first_str引用的是一个新的字符串,如果在程序里面有大量的字符串连接操作的话,性能会十分低下.Lua是一个很简洁的语言,他没有StringBuffer的实现,但是其实我们可以动手写一个简单的StringBuffer实现,来避免性能的问题. 首先定义一个叫St

  • lua获取未来某时间点的时间戳解决方案

    最近在做游戏定时推送,犹如第二天9点通知玩家领取奖励之类的需求,要求获取第二天9点的时间戳,以前用JS写过类似的需求,JS中的Date类用起来比较方便,很多东西已经帮忙弄好了,最主要的还是会自动处理时间和日期的自己进阶吧.最近写lua也碰到类似的需求,但看过lua的文档后,发现lua没有JS那么方便:但也不是没有办法,这里记录下,供以后查看,直接看代码吧 复制代码 代码如下: local cur_timestamp = os.time() local one_hour_timestamp = 2

  • 获取Lua表结构(table)数据实例

    只是获取一个全局变量什么的太没意思了,今天我们来玩个高难度的--获取Lua表结构的数据. (旁白:O O!我是不是该说点什么?) 上一章传送门:http://www.jb51.net/article/55093.htm 1. 什么是table table是Lua里最强大的数据类型,我们可以当成是数组,但是它又和数组有点不一样,建议大家看看Lua的语法教程,因为我对table也没有熟悉到可以给大家解释的程度. (旁白:那你还写什么教程...) 2. 获取table变量 现在,我们给helloLua

  • 使用lua实现php的var_dump()函数功能

    习惯了php中的var_dump()函数,而如今写lua的时候总习惯使用var_dump()函数,于是就自己动手写了一个类似功能的var_dump()函数. 复制代码 代码如下: function var_dump(data, max_level, prefix)       if type(prefix) ~= "string" then           prefix = ""      end       if type(data) ~= "tab

  • python中实现php的var_dump函数功能

    最近在做python的web开发(原谅我的多变,好东西总想都学着...node.js也是),不过过程中总遇到些问题,不管是web.py还是django,开发起来确实没用php方便,毕竟存在的时间比较短,很多不完善的地方. 比如我在调试php中最常用的函数,var_dump,在python里找不到合适的替代函数.php中var_dump是一个特别有用的函数,它可以输出任何变量的值,不管你是一个对象还是一个数组,或者只是一个数.它总能用友好的方式输出,我调试的时候经常会需要看某位置的变量信息,调用它

  • Lua 数学库的所有函数功能作用一览

    math.pi 为圆周率常量 = 3.14159265358979323846 abs 取绝对值 math.abs(-15) 15 acos 反余弦函数 math.acos(0.5) 1.04719755 asin 反正弦函数 math.asin(0.5) 0.52359877 atan2 x / y的反正切值 math.atan2(90.0, 45.0) 1.10714871 atan 反正切函数 math.atan(0.5) 0.463647609 ceil 不小于x的最大整数 math.c

  • 使用lua实现php的print_r()函数功能

    之前写了一些类似php的函数,下面再来一个print_r()函数,代码如下: 复制代码 代码如下: function pr (t, name, indent)       local tableList = {}       function table_r (t, name, indent, full)           local id = not full and name or type(name)~="number" and tostring(name) or '['..n

  • php数组指针函数功能及用法示例

    本文实例讲述了php数组指针函数功能及用法.分享给大家供大家参考,具体如下: 数组指针函数有reset(),prev(),current(),next(),end(),key(),each() 其中reset(),prev(),current(),next(),end(),都是只与数组的值有关的函数,key()只与数组键,有关的函数,each()可以获得数组的值和键 reset()函数,参数是一个数组,引用传值,将一个数组的内部指针重置到首位,也就是数组的第一个元素所在的位置,然后返回第一个元素

  • php实现excel中rank函数功能的方法

    本文实例讲述了php实现excel中rank函数功能的方法.分享给大家供大家参考.具体分析如下: sql语句实现排名是像这样的如: 总分成绩为 195,180,180,161,名次分别为1,2,3,4,遇到并列的情况也是按照顺序的, 而Excel函数rank排名得到的结果是1,2,2,4,遇到并列跳过中间的3 下面的函数模拟的就是这种情况 函数如下(不知道有没有更好的实现方法): 公式为: 名次=总人数--比自己小的数的个数-这个分数重复次数+1(加上自己) 得到名次的数组再根据对应的id写入到

  • MySQL数据库开启、关闭、查看函数功能的方法

    应用 MySQL 时,会遇到不能创建函数的情况.出现如下错误信息: 复制代码 代码如下: ERROR 1418 : This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators varia

  • 深入php var_dump()函数的详解

    php var_dump 函数作用是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型.来看看var_dump 语法: 复制代码 代码如下: var_dump (var,var,bar); 下面来看看我刚才的一个实例吧. 复制代码 代码如下: <?php $ta =1; $tb ='t'; echo var_dump($ta,$tb);?> 输出为 复制代码 代码如下: int(1) string(1) "t" 第一个为数字就是int(1)

  • 函数名称 函数功能

    函数名称 函数功能Cbool(string) 转换为布尔值Cbyte(string) 转换为字节类型的值Ccur(string) 转换为货币类值Cdate(string) 转换为日前类型的值Cdbl(string) 转换为双精度值Cint(string) 转换为整数值Clng(string) 转换为长整型的值Csng(string) 转换为单精度的值Cstr(var) 转换为字符串值Str(var) 数值转换为字符串Val(string) 字符串转换为数值****** ************

  • 原生JS写Ajax的请求函数功能

    一般我们写网页的时候,如果用到 Ajax 请求服务器,都是使用 JQuery 等已经封装好的库来调用,比较简单. 但是一般这些库的功能很多,引入了太多我们用不到的东西,如果我们需要写一个功能单一,简单的页面,完全用不到引用如此庞大的库文件. 我们可以简单实现一个自己的 Ajax 请求功能,具体的代码如下: var ajax = {}; ajax.x = function () { if (typeof XMLHttpRequest !== 'undefined') { return new XM

随机推荐