当前位置:网站首页>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
边栏推荐
- Initial experience of domestic database tidb: simple and easy to use, quick to start
- 【华为HCIA持续更新】SDN与FVC
- What are cache penetration, cache breakdown, and cache avalanche
- 超标量处理器设计 姚永斌 第7章 寄存器重命名 摘录
- Detectron2 installation method
- 【HCIA持续更新】WLAN概述与基本概念
- 超标量处理器设计 姚永斌 第6章 指令解码 摘录
- 无心剑中译伊丽莎白·毕肖普《一门技艺》
- Summary of subsidy policies across the country for dcmm certification in 2022
- ITSS运维能力成熟度分级详解|一文搞清ITSS证书
猜你喜欢
曾经的“彩电大王”,退市前卖猪肉
wuzhicms代码审计
CocosCreator事件派发使用
Easy to use map visualization
Zebras are recognized as dogs, and the reason for AI's mistakes is found by Stanford
【HCIA持续更新】网络管理与运维
DB-Engines 2022年7月数据库排行榜:Microsoft SQL Server 大涨,Oracle 大跌
With an annual income of more than 8 million, he has five full-time jobs. He still has time to play games
To sort out messy header files, I use include what you use
Internet addiction changes brain structure: language function is affected, making people unable to speak neatly
随机推荐
【210】PHP 定界符的用法
People in the workplace with a miserable expression
Internet addiction changes brain structure: language function is affected, making people unable to speak neatly
创业两年,一家小VC的自我反思
General environmental instructions for the project
MVC mode and three-tier architecture
俄罗斯 Arenadata 发布基于PostgreSQL的产品
ARTS_20220628
Superscalar processor design yaoyongbin Chapter 5 instruction set excerpt
ISO27001认证办理流程及2022年补贴政策汇总
【HCIA持续更新】WLAN工作流程概述
Flask lightweight web framework
[unity ugui] scrollrect dynamically scales the grid size and automatically locates the middle grid
The top half and bottom half of the interrupt are introduced and the implementation method (tasklet and work queue)
Stars open stores, return, return, return
[HCIA continuous update] WLAN overview and basic concepts
2022年DCMM认证全国各地补贴政策汇总
【HCIA持续更新】网络管理与运维
Weima, which is going to be listed, still can't give Baidu confidence
无心剑中译伊丽莎白·毕肖普《一门技艺》