Eclipse告诉我')'应该在'='附近,但是肯定不能对吗?这是我的代码:
Animator = Class{}
function Animator:init(statictilesize = true)
self.isTileSizeStatic = statictilesize
end
我很困惑。虽然我只用Lua一个月,但我更像是C ++ / C#/ Python的家伙。也许我想念一些东西。
答案 0 :(得分:1)
好的,显然我是Lua Noob的全部/宠坏了C ++ Python的人。
卢阿不允许这样做。相反,在init或构造函数中,放入:
argument = argument or defaultValue
如
function Animator:init(statictilesize)
statictilesize = statictilesize or true
self.isTileSizeStatic = statictilesize
-- Yikes
end
编辑:考虑到在第一个参数之后我需要更多的参数,因此我找到了一个更稳定的解决方案。
function Animator:init(booleanstatictilesize, totalanimationstates, totalanimationframes)
if booleanstatictilesize ~= false then
self.isTileSizeStatic = true
else
self.isTileSizeStatic = false
end
end
乱砍式铸造/检查排序。我可能是错的,我真是个菜鸟。我从未接受过正规编程教育。我听起来像个白痴。
答案 1 :(得分:0)
通常看来,要做的是像普通一样定义函数,如果未设置要可选的变量,则稍后再设置它们,然后重新定义函数签名以查找表:
Animator = Class{}
function Animator:init(args)
self.isTileSizeStatic = args.statictilesize ~= false
end
稍后您使用以下语法形式调用此函数:
Animator.init{statictilesize = false}
nil
和false
都是Lua中的“假”条件。 Lua中的所有其他条件都是真实的,包括0
和''
。因此,为了获得在未设置statictilesize
时将其默认设置为true的功能,您必须将其不等式检查为false,因为其他所有条件都将为true(包括nil
,因为{{1} }不是nil
)。
请注意,这会将您的论点隐式转换为布尔值
与Python有很多不同。
有关更多详细信息,请参见此处:
https://www.lua.org/pil/5.3.html
此外,如果您希望false成为传递给函数的可接受参数组的一部分(或者您只是不想将参数隐式转换为布尔值),则可以使用以下语法:
false