当前位置: 首页 > news >正文

EmmyLua注释详解

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)
1
2
3
4
5
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

http://www.lryc.cn/news/360796.html

相关文章:

  • Linux内核 -- 启用 Linux 内核调试信息
  • vs2019 无法打开QT的UI文件
  • Python | A + B问题|||
  • JRT连接希森美康出图
  • UVa11604 General Sultan
  • USB - ACK、NAK和STALL的含义
  • 查看 WSL2 (Windows Subsystem for Linux 2) IP 地址
  • 如何判断一个JavaScript对象是否为空?
  • 小白跟做江科大32单片机之LED闪烁
  • “世界酒中国菜”系列活动如何助推乡村振兴和文化交流?
  • 上位机图像处理和嵌入式模块部署(f407 mcu中fatfs中间件使用)
  • LeetCode/NowCoder-栈和队列OJ练习
  • VSCODE终端输出中文乱码 菱形问号?
  • 域名绑定ip和端口的方法是什么?
  • 视频监控平台AS1000:通过网络SDK接入松下视频监控设备(Panasonic监控摄像机) 的源代码的函数和功能介绍及分享
  • GitLab项目中添加用户,并设置其角色权限等
  • asio之winsock的初始化
  • 打造智能化未来:智能运维系统架构解析与应用实践
  • 【GeoServer系列】——安装与发布shapefile数据
  • Rust 第三方库创建和导入(cargo --lib)
  • node-sass和sass-loader安装Error经验
  • LabVIEW车体静强度试验台测控系统
  • 软件测试进阶
  • 将字符串 “()“ ““ “|“ 条件组成的复杂表达式转换为ES查询语句
  • 2024上半年软考 考试心得
  • 【redis】set和zset常用命令
  • 【面试题-006】java中的垃圾回算法有哪些?
  • 最小时间差
  • 动态SQL IF语句
  • 961题库 北航计算机 操作系统 附答案 选择题形式