Lua函数参数传递机制解释:C++引擎调用参数覆盖问题
解释下面的Lua函数
'function A(id) return function(actor) end end'
假如这个函数属于module的一个区域块,当引擎C++函数调用传参的时候,为什么C++引擎传的参数不会覆盖掉这个区域块里面的形参内容:
这个Lua函数定义了一个名为A的函数,它接受一个参数id。函数A返回一个匿名函数,该匿名函数接受一个参数actor。但是在这个匿名函数中并没有实际的操作,所以它并不会对传入的参数做任何处理。
在Lua中,函数参数是按值传递的,也就是说函数内部会创建一个新的变量来保存传入的参数值。这意味着传入的参数不会直接覆盖掉函数内部的形参。无论是C++引擎还是其他调用该函数的代码,传入的参数值都会被复制到函数内部的形参中,并在函数内部使用。
因此,无论传入的参数是什么,它们都不会覆盖掉函数A中的形参id。函数A中的形参id仅在函数内部可见,并且在函数返回后就会被销毁。
原文地址: https://www.cveoy.top/t/topic/o1BC 著作权归作者所有。请勿转载和采集!