Epi*_*oeR 3 lua module class love2d
我尝试在名为“Point”的“basic.lua”文件上定义我的类,并尝试在文件“main.lua”上实现它,但我不断收到此错误:
Error
Syntax error: basic.lua:3: '(' expected near 'Point'
Traceback
[C]: at 0x7ffc269728f0
[C]: in function 'require'
main.lua:3: in function 'load'
[C]: in function 'xpcall'
[C]: in function 'xpcall'
Run Code Online (Sandbox Code Playgroud)
这是我的“basic.lua”代码
return {
function Point(self, x, y)
local Point = {
x = x;
y = y;
AsString = function(self)
print("{x: " + self.x + ", y: " + self.y + "}");
end;
}
return Point;
end;
};
Run Code Online (Sandbox Code Playgroud)
这是我的“main.lua”代码
function love.load()
local Basic = require("basic");
PlayerAcceleration = Basic.Point:new{1, 2};
PlayerVelocity = Basic.Point:new{0, 0};
PlayerPosition = Basic.Point:new{0, 0};
love.graphics.print(PlayerAcceleration.AsString(), 0, 0, 0, 1, 1, 0, 0, 0, 0);
end;
Run Code Online (Sandbox Code Playgroud)
我在 Lua 的课程上遇到了很多困难,所以任何帮助将不胜感激。
您的模块返回一个表,但在该表构造函数内您尝试定义一个全局函数Point
。您不能创建这样的表字段。这是无效的语法。
return { function a() end }
Run Code Online (Sandbox Code Playgroud)
使用
return { a = function() end }
Run Code Online (Sandbox Code Playgroud)
反而。
PlayerAcceleration.AsString()
Run Code Online (Sandbox Code Playgroud)
不管用。要么使用PlayerAcceleration.AsString(PlayerAcceleration)
或PlayerAcceleration:AsString()
否则,当您尝试在函数体中对其进行索引时,AsString
的参数将为 nil,从而导致错误。self
"{x: " + self.x + ", y: " + self.y + "}"
这不是 Lua 中连接字符串的方式。使用 Lua 的串联运算符..
而不是+
.
此外,您正在调用的Basic.Point:new
内容不存在。在继续尝试实现类之前,请先完成 Lua 初学者教程,阅读 Lua 编程和 Lua 参考手册。