遇到一些关于编辑器成员自动完成和提示问题,不知道是自己使用的问题还是编辑器支持有问题,反复尝试得到以下结果
1、模块定义的问题
定义模块
module(...)
--
local modname = ...
local M = {}
_G = M
package.loaded = M
setfenv(1, M)
--]]
function test()
print("hello!")
end
使用模块
require "mymodule"
mymodule.test() -- 此处不能列出其成员方法test
使用以上方法定义的一个模块mymodule,在其他地方使用这个模块时编辑器不能列出该模块的成员,然而以上程序可以正常运行
2、类定义的问题
local className = ...
local Class = class(className, function()
return cc.Node:create()
end)
_G = Class
package.loaded = Class
function Class.create()
local obj = Class.new()
obj:init() -- 此处可以提示Node的成员列表
return obj
end
function Class:init()
self:xxxx() -- 此处可以提示Node的成员列表
end
该类的定义其他地方均可以正常使用
由于该方式类定义的前部分所有类都是几乎一致的,如果我把它放到一个全局的方法中,如:
function gclass(name, super)
local Class = class(name, function()
return super
end)
_G = Class
package.loaded = Class
return Class
end
类的定义都改为gclass全局方法来定义,如:
local MyClass = gclass(..., cc.Node:create())
function MyClass.create()
local obj = MyClass.new()
obj:init() -- 此处不能提示Node的成员列表
return obj
end
function MyClass:init()
self:xxxx() -- 此处不能提示Node的成员列表
end
那么,就会出现无法列出父类的成员的情况,然而程序是可以正常使用的,就是编写起来没提示和自动完成,比较麻烦
此问题是code ide的缺陷吗?还是我操作哪里出问题了?
本人是个刚接触的新手,请各位大虾指教