Lua 输出可变参数列表内容

2023-10-27

在 Lua 中有8种基本数据类型:nil , boolean , number , string , user data , function , thread , table 

数据类型 描述
nil 表示一个无效值
boolean 包含两个值:false 和 true
number 实数
string 字符串 -- 由一对双引号或单引号表示
function 由 C 或者 Lua 编写的函数
userdata 表示任意储存在变量中的 C 数据结构
thread 表示执行的独立线路,用于执行协同程序
table 可以理解为数组,数组的索引可以是数字或者是字符串。 例如: local tab = {} 即创建了一个空表

认识完,这几种基本类型就开始这篇博客的中心思想,目的就是在垒码过程中对数据进行输出:

function showPrintInfo(...)
	-- body
	local stringcat = ""
	for k, v in ipairs({...}) do 
		local subString = ""
		if type(v) == "boolean" then
			subString = (v == true and "true" or "false")
		elseif type(v) == "number" or type(v) == "string" then
			subString = tostring(v)
		elseif type(v) == "table" then
			printTable(v)
		else
			subString = "<数据是" .. type(v) .. "类型, 未处理类型>"
		end
		stringcat = stringcat .. "    " .. subString
	end
	print(stringcat)
end

这里其他的类型都容易输出,基本上是直接打印就可以了,关键是对 table 的输出,这里我们需要用到递归的思想:

-- tab 		需要输出的 table 的对象
-- level	表的深度(可不填,直接从最外层遍历)
-- key 		该深度下表的索引(可不填,直接从 1 开始遍历)
function printTable(tab, level, key)
	-- body
	level = level or 1
	local indent = ""
	for i = 1, level do 
		indent = indent .. "    "
	end

	print(indent .. "{")

	key = ""
	for k, v in pairs(tab) do 
		if type(v) == "table" then
			key = k
			printTable(v, level + 1, key)
		else
            local content
			if type(v) == "string" then
				if k ~= #tab then
					content = string.format(indent .. "    " .. "\"%s\",", tostring(v))
				else 
					content = string.format(indent .. "    " .. "\"%s\"", tostring(v))
				end
				print(content)
			else
				if k ~= #tab then
					content = string.format(indent .. "    " .. "%s,", tostring(v))
				else
					content = string.format(indent .. "    " .. "%s", tostring(v))
				end
				print(content)
			end
		end
	end

	print(indent .. "}")
end




测试代码:

local tab = { {"Jack", "Lucy", "John"}, {18, 20, 19}, {"CHINA", "USA", "UK"} }
showPrintInfo(true, 123, tab)

输出结果:



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Lua 输出可变参数列表内容 的相关文章

  • 十六进制常数 = 格式错误的数字?

    我有一个 Lua 脚本 我试图在其中使用十六进制数字 0x 如果我使用官方 Windows 二进制文件在控制台中运行此脚本 它可以正常工作 但是如果我在我的应用程序中运行它 简单的 dofile 我得到 malformed number n
  • 了解静态链接嵌入式lua环境中lua扩展dll的构建/加载

    我有一个相对复杂的 lua 环境 我试图了解以下内容如何工作 起始设置包括以下两个模块 主要应用 无lua环境 DLL 静态链接到lua lib 包括解释器 该 dll 被加载到主应用程序中 并运行 lua 控制台解释器和可从控制台访问的
  • Lua:冒号符号、“自我”和函数定义与调用

    我对定义 调用 Lua 函数时使用的冒号表示法感到非常困惑 我以为我已经明白了 直到我看到这段代码 function string PatternSafe str return str gsub pattern escape replace
  • Lua中如何获取目录列表

    我需要 LUA 中的目录列表 假设我的目录路径为 C Program Files 我需要该特定路径中所有文件夹的列表以及如何搜索该列表中的任何特定文件夹 Example 需要路径 C Program Files 中所有文件夹的列表 以下是上
  • 循环直到在表中找到 2 个特定值?

    我试图找到一种更聪明的方法来解决这个问题 这是与游戏相关的代码的摘录 它循环遍历每个背包的每个插槽 直到找到铲子和绳子 local continue local foundShovel foundRope for i 0 Container
  • lua_resume 的 from 参数的含义

    From Lua 5 2 参考手册 http www lua org manual 5 2 manual html lua resume int lua resume lua State L lua State from int nargs
  • Lua中如何在另一个表的表成员中搜索

    我正在编写一个 lua 程序 它有一个表 该表是另一个表的成员 当我向该成员表添加新日期时 一切正常 但是 当我想在该表中搜索时 无论我给出什么键 我总是会将最后一行添加到表中 如何在该成员表中正确搜索 Stream name functi
  • VB6 - Lua 集成

    我想知道是否有人有任何集成 Lua 和 VB6 的技巧 我正在运行一个小型在线角色扮演游戏 添加一些脚本会很棒 嗯 这是可行的 我曾经为 Lua 5 0 2 做过 但找不到文件 在您拥有的选项中 您可以 将 Lua 封装在公开 Lua AP
  • Lua中按字符分割字符串

    我有像这样的字符串 ABC DEF 我需要将它们分开 字符并将两个部分分别分配给一个变量 在 Ruby 中 我会这样做 a b ABC DEF split 显然Lua没有这么简单的方法 经过一番挖掘后 我找不到一种简短的方法来实现我所追求的
  • Lua中有状态迭代器和无状态迭代器的区别

    Lua中无状态和有状态迭代器有什么区别 请详细解释一下 什么时候需要使用无状态 什么时候需要使用另一种 我需要例子来理解这个概念 首先让我们就一个定义达成一致 在 Lua 中 迭代器是function 类似对象 每次调用时都会返回序列中的下
  • 如何在 Lua - Lightroom 插件中使用 HMAC

    首先我要提的是我对 Lua 真的很陌生 如果你认为我的问题太愚蠢 请耐心等待 这是我的要求 我需要使用 HMAC sha256 进行 Lightroom 插件开发 因为我使用它是为了安全 我试图使用这个但没有运气https code goo
  • 如何使用 Lua 运行可执行文件?

    我有一个可执行文件想要使用 Lua 运行 我该怎么做 似乎无法在任何地方找到有关此的任何文档 您可以使用 Lua 原生的 执行 命令 Example os execute c temp program exe 资料来源 Lua 指南 os
  • 在 Lua 中只归档一次

    我想知道是否有一种方法可以只执行一次 lua 文件 并且后续尝试执行该 lua 文件将导致无操作 我已经考虑过做一些类似于 C header 的 if else endif 技巧的事情 我想知道是否有一个标准方法来实现这一点 James w
  • 克隆一个lua状态

    最近 我在使用C 和Lua进行开发时遇到了很多困难 我的情况是 由于某种原因 我的 C 程序中可能有数千个 Lua 状态 但这些状态在初始化后应该是相同的 当然 我可以为每个状态执行 luaL loadlibs 和 lua loadfile
  • 表长度运算符的性能

    卢阿有 运算符来计算用作数组的表的 长度 在诸如 C 之类的语言中 计算出某个内容的长度后 通常不会再次计算它 例如int len strlen string 这在 Lua 中有什么不同吗 其中一个的效率是否比另一个低 显然这可能不会显示显
  • 从命令行运行 vlc 扩展

    我有一个用 Lua 编写的 vlc 扩展 我知道如何从 GUI 运行它 查看 gt 我的扩展 我想从命令行运行它 这样我就不需要每次都启动X 它还没有实施 查看门票 3883 https trac videolan org vlc tick
  • 模式 ^u.meta(\.|$) 未按预期工作

    我有这个模式 u meta 预期行为 u meta 将匹配所有角色 例如 u meta u meta admin u meta admin system u meta 它不应该匹配如下所示的内容 u meta admin u meta ad
  • Linq 是如何工作的(在幕后)?

    我正在考虑为 Lua 制作类似 Linq 的东西 并且我大致了解 Linq 的工作原理 但想知道是否有一篇好文章 或者是否有人可以解释 C 如何使 Linq 成为可能 注意 我的意思是在幕后 比如它如何生成代码绑定等等 而不是最终用户语法
  • 在循环内部或外部声明本地更好吗? [复制]

    这个问题在这里已经有答案了 我习惯这样做 do local a for i 1 1000000 do a
  • lua-socket:unix 域套接字?

    我使用的是 lua socket 3 0rc1 3 Ubuntu Trusty 附带的 和 lua 5 1 我正在尝试监听 unix 域套接字 我能找到的唯一示例代码是this http lua users org lists lua l

随机推荐

  • Quartz的MisFire机制解析

    在上一篇 Quartz的负载均衡如何实现 文章中说过Quartz的线程模型 提到了MisFire任务是由MisfireHandler线程专门进行处理的 本文主要是来了解下该部分功能是如何实现的 源码分析 MisfireHandler线程定义
  • java 上传方法_Java实现文件上传的方法

    本文实例为大家分享了java实现文件上传的具体代码 具体内容如下 1 java代码 package com github reston servlet import java io file import java io fileoutpu
  • 添加高斯噪声

    coding utf 8 import cv2 as cv import numpy as np import sys def add noise image mean 0 val 0 01 size image shape image i
  • 用本机电脑搭建网站(域名、DNS解析)

    最近又准备瞎捣鼓一下个人网站 本来呢 如果是自己玩玩的话 用花生壳或者NAT123这样的动态DNS解析就可以了 但是最近花生壳这个吊玩意不知道怎么又没办法解析了 而且这货给的域名用的是我的手机号 如此一来个人隐私也暴露了 所以今天我就来研究
  • 吴恩达Coursera深度学习课程 deeplearning.ai (5-2) 自然语言处理与词嵌入--编程作业(二):Emojify表情包

    Part 2 Emojify 欢迎来到本周的第二个作业 你将利用词向量构建一个表情包 你有没有想过让你的短信更具表现力 emojifier APP将帮助你做到这一点 所以不是写下 Congratulations on the promoti
  • java的继承(一)

    程序中的继承 特点 利于代码复用 缩短开发周期 关键字 class Dog extends Animal 方法重写 与方法重载 方法重写 方法和父类方法参数完全一样 返回值相同 访问修饰符权限 gt 父类方法 重写方法 我理解为重写参数作用
  • buuctf[MRCTF2020]千层套路

    buuctf MRCTF2020 千层套路 题目描述 题目分析 解题过程 题目描述 题目给了一个以四位数字做文件名的压缩文件 题目分析 发现题目给的压缩文件名 就是解压这个压缩文件的密码 既然是千层套路 类似的操作可能要进行一千次 解题过程
  • div失去焦点事件onblur()无效

    初学js事件 想做一个点击时变红 取消聚焦时变白的div 于是我这样写代码 div style width 100px height 50px border 1px solid div
  • 谷歌Chrome浏览器开发者工具教程—基础功能篇

    Chrome F12开发者工具 是非常实用的开发辅助工具 对于前端开发者简直就是神器 但苦于开发者工具是英文界面 且没有中文 这让很多朋友都不知道怎么用 下载吧小编为大家带来Chrome开发者工具基础功能和高级性能分析器 Timeline
  • 背包问题的动态规划算法和fptas

    背包问题 instance 给定n个item i 1 2 n i 1 2 dots n weights w1 w2 wn Z w 1 w 2 dots w n in Z values v1 v2 vn Z v 1 v 2 dots v n
  • 搭建CentOS在线yum源镜像服务器

    说明 操作系统 CentOS 6 7 Nginx版本 1 8 0 rsync版本 3 0 6 IP地址和端口 192 168 3 100 8080 目标 同步CentOS镜像站点的内容到此服务器 通过配置http服务器 提供yum服务 一
  • Python——math库常用的数学函数

    在使用math库前 要用import导入该库 上图为math库中常用的一些数学函数 下面给出具体实例 例1 import math a eval input 请输入一个负数 print a math fabs a 输出结果 例2 impor
  • 【LeetCode刷题】237 删除链表中的节点

    题目 请编写一个函数 用于 删除单链表中某个特定节点 在设计函数时需要注意 你无法访问链表的头节点 head 只能直接访问 要被删除的节点 题目数据保证需要删除的节点 不是末尾节点 示例 这题其实真的简单 只能直接访问到给定要删除的节点 本
  • 设置Tab键为4个空格 Java开发手册规范之tab键设置

    设置Tab键为4个空格 在阿里的Java开发手册 一 编程规约 三 代码格式 第5条提到 强制 采用4个空格缩进 禁止使用tab字符 IDEA中勿勾选 Use tab character eclipse中必选 insert spaces f
  • [JAVEee]SpringBoot项目的创建

    SpringBoot可以更好的开发Spring项目 本文章将使用idea社区版来演示创建项目的过程与注意事项 SpringBoot的优点 SpringBoot中内置快速添加依赖的功能 能够便捷的集成各种框架 帮助开发 内置运行容器 无需配置
  • Linux top里面%CPU和us%的解释

    有的同学会把 CPU和us 搞晕 也就是下图所示在top的时候查看cpu的信息 这时有的同学会问 这两个CPU到底哪个是对的 其实都是对的 只是表达的意思不一样 官方解释如下 Cpu s 34 0 us 用户空间占用CPU百分比 CPU 上
  • 2023华为OD机试真题【最小调整顺序次数】

    问题描述 给定一个队列 但是这个队列比较特殊 可以从头部添加数据 也可以从尾部添加数据 但是只能从头部删除数据 输入一个数字n 会依次添加数字1 n 也就是添加n次 但是在添加数据的过程中 也会删除数据 要求删除必须按照1 n按照顺序进行删
  • 13 二叉树:建立存储结构(前序输入次序) &&二叉树专题

    目录 首先讲讲指针的引用 然后我们再复习一下typedef的用法 然后我们来创建二叉树 二叉树的建立 首先二叉树的存储结构 实际用代码体现 分为顺序存储和链式存储两种 但一般情况我们都用链式存储结构 部分内容转自指针的引用 MAGDB的博客
  • ChatGPT还有哪些不足?

    从技术角度来看 ChatGPT作为一个基于神经网络的自然语言处理模型 其优势在于能够处理大量的语言数据 并生成自然流畅的语言表达 ChatGPT还可以通过对话历史的分析 对当前对话进行上下文感知和情境推理 从而提供更加个性化和智能化的回答
  • Lua 输出可变参数列表内容

    在 Lua 中有8种基本数据类型 nil boolean number string user data function thread table 数据类型 描述 nil 表示一个无效值 boolean 包含两个值 false 和 tru