自己动手实现Lua(五)lua栈
Lua栈是宿主语言(对于官方Lua来说是C语言,对于本书来说是Go语言)和Lua语言进行沟通的桥梁。
Lua的数据类型和值
在lua代码里,变量是不携带类型信息的,变量的值才携带类型信息。换句话说,任何一个lua变量都可以被赋予任意类型的值。
在语言层面,Lua一共支持8种数据类型,分别是nil、布尔(boolean)、数字(number)、字符串(string)、表(table)、函数(function)、线程(thread)和用户数据(userdata)。
栈索引
为了便于用户使用,栈索引可以是负数。正数索引叫做绝对索引,从1(栈底)开始递增,负数索引叫做相对索引,从-1(栈顶)开始递减。LuaAPI函数会在内部把相对索引转换为绝对索引。
假设Lua栈容量是n,栈顶索引是top(0 < top <= n)。我们称位于[1,top]闭区间内的索引为有效(Valid)索引,位于[1,n]闭区间的索引为可接受(Acceptable)索引。如果要往栈里写入值,必须给LuaAPI提供有效索引,否则会导致错误。如果仅仅是从栈里读取值,则可以提供可接受索引(无效的返回nil)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了