当前位置:网站首页>Lua EmmyLua 注解详解
Lua EmmyLua 注解详解
2022-07-04 16:16:00 【斗乐八神】
Lua EmmyLua 注解详解
Why
为了使 IDE 编码体验和强语言相近
让 IDE 提前发现编码错误
BUG 查找更方便
代码阅读更方便
建议
明确字段类型
明确字段访问修饰符
明确方法参数类型
善用 “:” 继承 “|” 或 ","多个
支持格式
–类 —@class MY_TYPE[:PARENT_TYPE] [@comment]
–类型 —@type MY_TYPE[|OTHER_TYPE] [@comment]
–别名 —@alias NEW_NAME TYPE
–参数 —@param param_name MY_TYPE[|other_type] [@comment]
–返回值 —@return MY_TYPE[|OTHER_TYPE] [@comment]
–字段 —@field [public|protected|private] field_name FIELD_TYPE[|OTHER_TYPE] [@comment]
–泛型 —@generic T1 [: PARENT_TYPE] [, T2 [: PARENT_TYPE]]
–不定参数 —@vararg TYPE
–内嵌语言 —@language LANGUAGE_ID
–数组 —@type MY_TYPE[]
–字典 —@type table<KEY_TYPE, VALUE_TYPE>
–函数 —@type fun(param:MY_TYPE):RETURN_TYPE
官网完整例子
—@class Transport @parent class
—@field public name string
local transport = {}
function transport:move() end
—@class Car : Transport @Car extends Transport
local car = {}
function car:move() end
—@class Ship : Transport @Ship extends Transport
local ship = {}
—@param type number @parameter type
—@return Car|Ship @may return Car or Ship
local function create(type)
– ignored
end
local obj = create(1)
—now you can see completion for obj
—@type Car
local obj2
—now you can see completion for obj2
local list = { obj, obj2 }
—@param v Transport
for _, v in ipairs(list) do
—not you can see completion for v
end
自己验证例子
—@class TestBase @基类
—@field protected key number @基类字段
—@class Test : TestBase @测试类
—@field bool boolean @boolean 类型字段
—@field numberArray number[] @数组
—@field numberDictionary table<number,number> @字典
—@type Test
local Test = {}
—@type number @number 类型字段(后期扩展字段 IDE 不能识别注释)
Test.num = 0
—方法 1
function Test:Func1()
–字段测试
self.key = 0 --能跳转基类
self.bool = false
self.num = 1 --IDE 不能识别注释
for i, v in ipairs(self.numberArray) do end
for k, v in pairs(self.numberDictionary) do end --遍历能识别 k v 类型
--方法测试
self:Func2("张三")
local tempFunc3 = self:Func3("李四")
local tempFunc4A, tempFunc4B = self:Func4("王五", false)
local tempFunc5 = self:Func5(false)
end
—方法 2 有参数
—@param name string @名字
function Test:Func2(name)
end
—方法 3 有返回值
—@return string @返回类型
function Test:Func3(name)
return name
end
—方法 4 多参数 多返回值
—@param name string @名字
—@param sex boolean @性别
—@return string , number @返回类型
function Test:Func4(name, sex)
return name, sex
end
—方法 5 参数多类型 返回值多类型
—@param sex string | boolean @性别
—@return string | boolean @返回类型
function Test:Func5(sex)
return sex
end
—方法 6 参数为方法
—@param func fun(key:number):string @函数
function Test:Func6(func)
return func(1)
end
–使用 see 注解来标注一个引用
—@see Test#Func1
–下面的不常用
–不定参数注解
—@vararg string
—@return string
local function format(…)
local tbl = { … } – inferred as string[]
end
–泛型
–几乎不用 C#用是因为用 object 作为参数 有装箱拆箱消耗 lua 语言天然不需要
—@class Goods @物品基类
—@field public price number @价格
—@class Food : Goods @食物
—@field public cal number @卡路里
—@class Phone : Goods @手机
—@field public battery number @电量
—@generic T : Goods
—@param object T
function Test:GetPrice(object)
return object.price
end
–内嵌语言
—@language JSON
local jsonText = [[{
“name”:“Emmy”
}]]
return Test
边栏推荐
- Superscalar processor design yaoyongbin Chapter 7 register rename excerpt
- 【Hot100】31. Next spread
- Cocoscreator event dispatch use
- 无心剑中译伊丽莎白·毕肖普《一门技艺》
- 简单易用的地图可视化
- Pytorch深度学习之环境搭建
- The money circle boss, who is richer than Li Ka Shing, has just bought a building in Saudi Arabia
- Clever use of curl command
- 我写了一份初学者的学习实践教程!
- Device interface analysis of the adapter of I2C subsystem (I2C dev.c file analysis)
猜你喜欢
MVC mode and three-tier architecture
Master the use of auto analyze in data warehouse
The block:usdd has strong growth momentum
蓝桥:合根植物
Tutorial on the use of Huawei cloud modelarts (with detailed illustrations)
wuzhicms代码审计
一直以为做报表只能用EXCEL和PPT,直到我看到了这套模板(附模板)
What if Kaili can't input Chinese???
12 - explore the underlying principles of IOS | runtime [isa details, class structure, method cache | t]
The Block:USDD增长势头强劲
随机推荐
Zhijieyun - meta universe comprehensive solution service provider
Oppo Xiaobu launched Obert, a large pre training model, and promoted to the top of kgclue
超标量处理器设计 姚永斌 第5章 指令集体系 摘录
Implementation of super large-scale warehouse clusters in large commercial banks
Clever use of curl command
mysql5.7安装教程图文详解
People in the workplace with a miserable expression
项目通用环境使用说明
俄罗斯 Arenadata 发布基于PostgreSQL的产品
Blood spitting finishing nanny level series tutorial - play Fiddler bag grabbing tutorial (2) - first meet fiddler, let you have a rational understanding
蓝桥:合根植物
【209】go语言的学习思想
超标量处理器设计 姚永斌 第6章 指令解码 摘录
股价大跌、市值缩水,奈雪推出虚拟股票,深陷擦边球争议
Achieve animation effect through event binding
shell脚本的替换功能实现
Initial experience of domestic database tidb: simple and easy to use, quick to start
【210】PHP 定界符的用法
General environmental instructions for the project
To sort out messy header files, I use include what you use