形参的类型决定了形参和实参交互的方式。如果形参是引用类型,它将绑定到对应的实参上。否则将拷贝后赋值给形参。一、参数当初始化一个非引用类型的变量时,初始值将拷贝给变量。此时对变量的改变不会影响到初始值。这也是课本上经常遇到的参方式。void reset(int i) { i++; }指针形参指针的行为和其他非引用类型一样,当执行指针拷贝工作时,拷贝的是指针的值。拷贝之后,两个指针是不同的指
一、概述在编写openresty代码时,有时候要调用自己编写的C++模块。 本文给出了两种常用的方法:1、基于luajit的cffi调用,这主要用于调用阻塞时间比较短的C++模块;2、基于openresty的shell模块调用,这对应于lua的os.execute调用,这可用于调用阻塞时间比较长的C++模块。在C++多进程master-worker工作机制较完整的实现,边端和云端协同工作实现 这篇
转载 2024-04-25 11:42:53
45阅读
注意:这篇文章中所用到的变量调用均为值拷贝,并不能改变Lua脚本中的值,除了接口拷贝(引用拷贝,会改变Lua中的值) 在TestLua中定义一些变量print("LuaTest") testInt=10 testStr="ABC" testBool=true testFloat=1.2 --无参数无返回值的函数 testFun1=function() print("无参无返回函数")
转载 2024-04-08 16:12:24
301阅读
z.lua 是一个会学习你使用习惯的 cd 命令,它会跟踪你在 shell 下访问过的路径,通过一套称为 Frecent 的机制(源自 Mozilla),经过一段简短的学习之后,z.lua 会帮你跳转到所有匹配正则关键字的路径里 Frecent 值最高的那条路径去。正则将按顺序进行匹配,"z foo bar" 可以匹配到 /foo/bar ,但是不能匹配 /bar/foo。特性说明:性能
一、协程简介1.协程定义协程的定义可以通过它与函数和线程的不同来进行界定,来加深其特点印象的效果。协程与函数的区别函数不能中断,协程可以转换协程和函数的不同之处是,函数一旦被调用,只能从头开始执行,直到函数执行结束退出,而协程则可以执行到一半就退出(称为yield),但此时协程并未真正结束,只是暂时让出CPU执行权,在后面适当的时机协程可以重新恢复运行(称为resume),在这段时间里其他的协程可
在 C++ 和 Lua 协作时,双方的互调用是一个绕不开的话题。通常情况下,我们直接使用 Lua/C API 就可以完成普通的参数传递过程。但在代码中直接操作 lua stack,容易写出繁冗和重复的代码。这时我们往往会借助 tolua++ 之类的库,把参数传递的工作自动化,降低负担。 进一步讲,由于 Lua参数传递在个数和类型上非常灵活(任何一个函数可以传递任意个数和类型的参数),有时我们
转载 2024-03-21 13:36:20
361阅读
一、LUA语言Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。二、Lua 特性1.轻量级: 它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程序里。2.可扩展: Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是
1:当无法列出传递函数的所有实参的类型和数目时,可用省略号指定参数表void foo(...); void foo(parm_list,...);2:函数参数的传递原理函数参数是以数据结构:栈的形式存取,从右至左入栈.eg:先介绍一下可变参数表的调用形式以及原理:首先是参数的内存存放格式:参数存放在内存的堆栈段中,在执行函数的时候,从最后一个开始入栈。因此栈底高地址,栈顶低地址,举个例子如下:v
转载 2024-08-22 11:20:01
76阅读
一、函数间参数传递的三种方式1、值传递主调函数:swap(x,y);被调函数:void swap(int a,int b);值递特点分析:值传递只是将主调函数中实参的值传递给被调函数的形参,通常用于将主调函数中原始数据传递给被调函数。被调函数修改形参中的数据,修改的只是数据副本,不会影响主调函数中实参的数据。值传递是一种单向数据传递机制,实参可以是常量、变量或表达式。值传递的好处在于被调函数程序
                Java中没有指针,所以也没有引用传递了,仅仅有值传递不过可以通过对象的方式来实现引用传递 类似java没有多继承 但可以用多次implements 接口实现多继承的功能  值传递:方法调用时,实际参数把它的
转载 2023-06-02 00:29:13
72阅读
_index元方法主要用于table的查询 table[key]的访问过程,首先检查table表中是否存在key的字段,如果有则返回,否则检查是否有_index的元方法,没有返回nil,有则查找元方法_index元方法可以是不一定是一个函数,还可以是一个table。如果是一个函数,则以table和不存在的key作为参数返回该函数 例如:_index=function(t,key) 如果是一个tab
转载 6月前
3阅读
在 Javascript 中,读取、赋值、调用方法等等,几乎一切操作都是围绕“对象”展开的;长久以来,如何更好的了解和控制这些操作,就成了该语言发展中的重要问题。I. JS对象的访问控制[1.1] 熟悉的 getter/setter所谓 getter/setter,其定义一般为:一个 getter 方法不接受任何参数,且总是返回一个值一个 setter 总是接受一个参数,且并不会返回值一些 get
0x05 函数定义与调用形式定义:函数是对语句和表达式的抽象。函数的调用形式:无论是语句或者表达式,都需要将所有参数放到一对圆括号中。即使调用没有参数也必须写出一对空括号。 注:此条规则对一种情况例外—一个函数只有一个参数,并且此参数是一个字面字符串或者table构造式(见下列代码)print "Hello World" --只有一个参数且为字面字符串 f{x = 20, y = 30}
转载 2024-03-11 11:44:44
137阅读
Ngx指令lua_code_cache on | off; 作用:打开或关闭 Lua 代码缓存,影响以下指令: set_by_lua_file , content_by_lua_file, rewrite_by_lua_file, access_by_lua_file 及强制加载或者reload Lua 模块等.缓存开启时修改LUA代码需要重启nginx,不开启时则不用。开发阶段一般关闭缓存。
转载 2024-03-05 14:48:00
112阅读
--调试:debug 库用于提供创建我们自定义调试器的功能 --debug()进入一个用户交互模式,运行用户输入的每个字符串。 使用简单的命令以及其它调试设置,用户可以检阅全局变量和局部变量, 改变变量的值,计算一些表达式,等等。 --getfenv(object)返回对象的环境变量 --gethook(optional thread)返回三个表示线程钩子设置的值: 当前钩子函数,当前钩子掩码,当
  读后感悟:这一篇讲述了c++调用lua中的函数、table、以及如何设置lua的全局变量,其中值得学习的是,要理解lua虚拟机栈的机制,其中一些参数可以结合lua5.1中文手册来查询,虽然手册比较年久,但还是很有价值的,现在还有很多是用lua5.1的,见一个不懂的函数就查一个,那么一读完整篇文章以及理解lua栈的机制后,你就会觉得恍然大悟。有一些函数是值得注意的,因为它在调用后改变栈
转载 2024-03-29 12:40:26
120阅读
写在最前        由于工作需要,有幸正真地开始接触lua。        lua一直是动态执行脚本中的宠儿,而究其原因不外乎简介方便,效率高。我甚至看到过有帖子说lua就是为了动态化c而生的,c是静态的,是编译型的,这使得他的灵活性大大下降,但是lua则弥补了他的短板。天不生你lua哥,万古c界如长夜。相关背景&
转载 2024-04-16 17:10:05
53阅读
Lua中的table函数库 一部分的table函数只对其数组部分产生影响, 而另一部分则对整个table均产生影响. 下面会分开说明.  table.concat(table, sep,  start, end)concat是concatenate(连锁, 连接)的缩写. table.concat()函数列出参数中指定table的数组部分从start位置到end位置的所有元素,
转载 2024-05-23 16:27:30
53阅读
一、单个参数的传递   首先我们在Lua中注册一个C类PJYCallbackMgr,其中一个方法为:          1. int testLuaCall(lua_State* L){ 2. ... 3. ...   然后我们在Lu
转载 1月前
402阅读
lua中,  问题1:如果你在可变参数...中传入若干个参数,其中有的参数要带nil,这时怎么解决呢?(比如local function _test(...) end    _test(1, nil, 3))  问题2:更甚于在一个带可变参数的函数里返回值是一个带可变参数的尾调用,这时还能正确得到要的参数?(比如 local function _test2(...) retu
  • 1
  • 2
  • 3
  • 4
  • 5