当前位置:网站首页>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
边栏推荐
- The money circle boss, who is richer than Li Ka Shing, has just bought a building in Saudi Arabia
- 上市公司改名,科学还是玄学?
- 通过事件绑定实现动画效果
- Easy to use map visualization
- I2C子系统之适配器的设备接口分析(i2c-dev.c文件分析)
- Redis主从复制
- What is low code development?
- shell脚本的替换功能实现
- Superscalar processor design yaoyongbin Chapter 6 instruction decoding excerpt
- High school physics: force, object and balance
猜你喜欢
The company needs to be monitored. How do ZABBIX and Prometheus choose? That's the right choice!
Detectron2 installation method
2022年全国CMMI认证补贴政策|昌旭咨询
Blood spitting finishing nanny level series tutorial - play Fiddler bag grabbing tutorial (2) - first meet fiddler, let you have a rational understanding
简单易用的地图可视化
补能的争议路线:快充会走向大一统吗?
要上市的威马,依然给不了百度信心
股价大跌、市值缩水,奈雪推出虚拟股票,深陷擦边球争议
表情包坑惨职场人
TCP两次挥手,你见过吗?那四次握手呢?
随机推荐
设置窗体透明 隐藏任务栏 与全屏显示
简单易用的地图可视化
国产数据库TiDB初体验:简单易用,快速上手
Master the use of auto analyze in data warehouse
How to test MDM products
Detectron2 installation method
【HCIA持续更新】广域网技术
Pytoch deep learning environment construction
With the stock price plummeting and the market value shrinking, Naixue launched a virtual stock, which was deeply in dispute
CocosCreator事件派发使用
【HCIA持续更新】WLAN工作流程概述
90后开始攒钱植发,又一个IPO来了
Pytorch深度学习之环境搭建
The Block:USDD增长势头强劲
Russia arena data releases PostgreSQL based products
[daily question] 871 Minimum refueling times
【Hot100】31. Next spread
Face_ Attendance statistics of recognition face recognition
The top half and bottom half of the interrupt are introduced and the implementation method (tasklet and work queue)
Zebras are recognized as dogs, and the reason for AI's mistakes is found by Stanford