lua学习(四)

lua源码解析三,lua_cpcall等一系列函数调用过程中的封装步骤各有什么作用 在追踪lua源码过程中,有一堆的关于call的函数,令人眼花缭乱,如果不稍作整理,就很难掌握什么情况下调用哪个call函数,以下是列举的几个call相关函数 type void (*Pfunc)(lua_State*L, void* ud); void (lua_call)(lua_State*L, int nargs, int nresults); int (lua_pcall)(lua_... 阅读详情

    这几天开了个小差, 把lua的很多扩展库都用了一下, luasocket, luasql, luacom, kepler... 最后终于理解了require的作用了.  其实也就是pil提及到的搜索加载目录那么简单,当然有一个经验就是定义LUA_PATH与package.cpath的值,就像定义include和lib的路径一样, 可以方便地导入到lua环境 :)
    本来打算用luasql的odbc库来做数据库访问的开发, 执行sql语句, 游标以及事务都成功了, 唯独执行带参数的存储过程不知道怎么搞,  这可郁闷了我很久. 由于对odbc不熟, 就查了下msdn文档, 后面看看luasql的源码发现于根本没有支持存储过程的参数. 看来要么就要自己在luasql的基础上扩展下,要么就要放弃它了. 手头上的事很多, 先放放,搞清楚一下odbc再说. 
 现在又回到了pil专注lua的语法了. table真的很cool,可以轻松实现稀疏矩阵, 串, 队列(单双向), 栈,集合以及各种其它的数据结构, 而且非常好用.  metatables和metamethods确实很酷, 利用这些东西可以实现运算符重载(看上去像), 继承(单/多),封装, getter/setter等等. 暂时还没有看到类的那一章. 有了前面的内容,怎么用__index定义原型链构造一个类的继承体系, 加上package, 应该八九不离十了,先意淫一把.
 忘了补充一下, 5.1  c api 中的 luaopen_*现在和lua调用其它普通c函数的过程一样:
lua_pushcfunction(L, luaopen_*);
lua_call();
也可以用
lua_cpcall(L, luaopen_*, 0); 简化上面两步的操作, 实际了看lua_cpcall的源码就知道,是一样的
那么现在5.1推荐的开始调用lua的写法是这样的: 
 lua_State *L = luaL_newstate();
 
 lua_cpcall(L, luaopen_base, 0);
 lua_cpcall(L, luaopen_io, 0);
 lua_cpcall(L, luaopen_string, 0);
 // ...
 // ...

电工电子实验——3BIT延时电路的设计与实现 设计一个 3BIT延时电路。 设计分析: Ⅰ.根据触发器的特性,只有来两个触发脉冲时才能恢复到原来的状态。也就是说触发器的输出信号比触发信号延迟了一个触发脉冲周期即1bit。据此3bit就需要3个触发器。 Ⅱ.输出要可控就要加一控制器,可用选择器实现。 Ⅲ.为便于观察输出信号的延迟,可设计一个F1信号。 阅读详情

相关推荐

在 RAP 里把编号这件事做得既优雅又合规:Early Numbering 与 Late Numbering 的落地指南

本文探讨了 SAP RAP 框架中的三种主键编号策略及其适用场景。文章首先指出传统 ABAP 应用中主键处理的局限性,详细分析了早期编号(外部/内部)和延迟编号的差异,强调延迟编号在避免业务断号方面的优势。通过 Partner 业务对象案例,文章演示了延迟编号的实现方法,包括行为定义配置、保存类实现和编号分配逻辑。同时指出测试中常见的校验陷阱,并提醒生产环境应避免简单的 MAX+1 方案,建议采用原子取号机制确保并发安全。全文从业务合规性和技术实现两个维度,为 RAP 应用的编号策略选择提供了实用指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1794

Lua: lua_call/lua_pcall/lua_cpcall的用法

函数原型: 1)void lua_call (lua_State *L, int nargs, int nresults); L是执行环境,可以理解为当前栈,nargs参数个数,nresults返回值个数。 2)void lua_pcall(lua_State *L,int nargs, int nresults,int nerrfunc); lua_pcall和该函数区别是多一个

MyDriverC 3916

face.py人脸识别打卡

调用笔记本内置摄像头、 从摄像头读取图片、转为灰度图片、检测人脸、保存图像、保持画面的持续得到n个样本后退出摄像人脸用vector保存各个人脸的坐标、大小(用矩形表示)、minSize和maxSize用来限制得到的目标区域的范围、将获取到的打卡时间重新做一个表格

lua C API

1:lua_pcall   vs  lua_call   and   lua_cpcall 与lua_call相对应的是lua_pcall函数,lua_pcall会以保护模式调用栈中的函数。以保护模式调用意思是,当被调用的函数发生任何错误时,该错误不会传播,不像lua_call会把错误传递到上一层,lua_pcall所调用的栈中函数发送错误时,lua_pcall会捕捉这个错误,并向栈中压入一个错

leisure 1022

Lua与C的交互

Lua 与 C 的交互   Lua是一个嵌入式的语言,它不仅可以是一个独立运行的程序,也可以是一个用来嵌入其它应用的程序库。 C API是一个C代码与Lua进行交互的函数集,它由以下几部分构成: 1、  读写Lua全局变量的函数; 2、  调用Lua函数的函数; 3、  运行Lua代码片段的函数; 4、  注册C函数后可以在Lua中被调用的函数;   在C和LUA之间交互的关键在...

weixin_34377065的博客 342

Lua C API 的正确用法【written by 云风】

刚学LUA,有点迷糊,找个文章看看,才知道,把lua嵌入到C里面,做的完美也不是件容易的事。文章,地址http://blog.codingnow.com/2015/05/lua_c_api.html 云风的 BLOG 思绪来得快去得也快,偶尔会在这里停留 « sproto 的缺省值处理 | 返回首页 | 卡通图片的压缩 »

unsv29的专栏 1823

Lua学习Lua的其他特性

Lua学习Lua的其他特性 目录 Lua学习Lua的其他特性 前言 一、Lua的多重继承 二、Lua私密性 三、弱引用table 1、内存管理考虑用弱引用回收 2、弱引用的三种方式 总结 前言 Lua与其它语言一样能够实现一些重要的特性,比如多继承、私密性以及垃圾回收等。具体怎么实现让我们来深入认识一下。 一、Lua的多重继承 根据Lua的继承方式(通过元表中查找自己不存在的字段)进行理解,Lua的多继承无非是在多个table中查找...

qq_37160769的博客 745

LuaLua学习笔记(

LuaLua学习笔记(

FEZ98 796

Lua学习循环

代码及输出:代码    --循环 --任何地方调用break都可以退出循环 --while循环 --[[ while(condition) do statements end ]] --for循环 --[[ var初始值exp1,结束点为exp2,每次增长数为exp3,不写exp3则默认为1 for var=exp1,exp2,exp3 ...

cmqwan的博客 7687

Lua学习篇④——循环

我一直认为循环的出现是开启了IT新时代的大门,这区别了人与机器的最大不同,让我们敲一次键盘上的‘A’键很简单,但让我们每1秒钟敲一次且24小时不停歇,可能你在半小时后就坚持不下去了~让机器来代替我们做这些有规律的重复劳动,这就是循环的意义。大多数情况下,编程中我们必不可少都会需要用到循环。循环语言由循环体和循环条件所构成,在Lua中有以下几种循环的结构:for循环Lua中for循环的基本格式为fo...

轩阳俊的博客 4642

lua_gc 源码学习

今天来看一下 mark 过程是怎样实现的。 所有的 GC 流程,都从 singlestep 函数开始。singlestep 就是一个最简单的状态机。GC 状态简单的从一个状态切换到下一个状态,循环不止。状态标识放在 global state 的 gcstate 域中。这一点前面谈过。 开始的两个状态和 mark 过程有关。 初始的 GCSpause 状态下,执行 markroot 函数。我们

徐中海的专栏[C++] 2649

Lua基础学习()

上一篇: Lua基础学习()https://blog.csdn.net/sun_zeliang/article/details/86677031   Lua元表 元表的作用  在Lua中,每个值通常都有一套预定义的操作集合,例如数字的相加,字符串的连接。而table比较特殊,没有办法直接将两个table相加,没有办法对函数作比较,也没有办法调用一个字符串,这个时候就需要元表来完成。 元...

智障侠的博客 420

Lua学习笔记

Lua学习笔记 通过上一节的知识,我们学会了如何利用表来作为参数,这样我们能实现的功能更多了。但是有一点是没有涉及到的,那就是返回值,而返回值的讨论不能不提userdata类型。 本节的目的:讨论如何处理Lua返回值和Userdata类型的应用。      本章涉及一些Allegro的知识,但是这不是重点。所以当你看到不熟悉的代码段时,不必太在意,把注意力放在编写Lua函数的套路上

Chinamming的专栏 717

Lua学习

if condition then then-part end if condition then then-part else if condition then then-part else else-part end

MyObject-C的专栏 437

Lua学习笔记之用C为Lua定义类型(UserData)

继续学习Lua与C交互,下面是在用C为Lua定义类型(UserData)的笔记以及自己的理解,其中学习过程中的写的测试代码都可以从我的github下载。      0、Lua中使用userdata类型来表示在C中定义的类型。userdata只是提供了一块原始的内存区域,可以用来存储任何东西,并且,在lua中userdata没有任何预定义的操作。在C中调用函数lua_newuserdata会根据指

MaximusZhou的专栏 5139

Lua学习笔记(

九、编译、执行与错误 Lua尽管是一种解释型语言,但也允许它在运行源代码之前预编译成一种中间形式。但解释型语言的特征在于,编译器是语言运行时的一部分,并且有能力执行动态生产的代码。因此执行编译产生的中间码速度更快。 1、编译 前面介绍到dofile函数用于执行代码块。但dofile实际上是调用loadfile实现的。dofile加载并执行文件,而loadfile只加载文件进行编译,而不执行。

u012480018的博客 1735

深入学习Redis_()Redis与Lua脚本

文章目录上一章一、Lua介绍1. 应用场景2. Linux安装Lua3. 简单了解LuaLua关键字定义变量Lua中的数据类型流程控制函数require 函数二、Redis整合Lua脚本原子性EVAL方法三、RedisTemplateLua整合Lua脚本构造脚本执行脚本第一种方式:脚本直接写在代码中,String类型第二种方式:脚本单独写在lua文件中、 Redis分布式锁结合Lua脚本获得锁的lua脚本:释放锁的lua脚本: 上一章 深入学习Redis_()五种基本数据类型、RedisTemplate

DreamsArchitects的博客 2962

、一起学习Lua 数据类型

userdata是一种用户自定义数据,用于表示一种由应用程序或C/C++语言库所创建的类型,可以将任意C/C++的任意数据类型的数据(通常是struct和指针)存储Lua变量中调用。https。

m0_66404702的博客 223

学习Lua 数据类型

userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储Lua 变量中调用。

m0_65038841的博客 131

Lua 数据类型的学习

userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储Lua 变量中调用。

m0_46413639的博客 123
上一篇: lua学习(三)
下一篇: lua学习(五)
flashvan
博客等级 码龄22年 6粉丝 67原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值