Lua 编程题目

Lua 编程题目

1. 实现一个Complex复数结构,支持复数的加、减、乘、除四则运算

示例:

local c1 = Complex(3.2, -5.1)

local c2 = Complex(7, 8)

local c3 = Complex(math.pi)

local c4 = Complex()

print((c1 + c4) * (c1 / c2 + c3))

输出: (6.765397376443092-16.92760925897166i)

注:精度不需要刻意关注

2. 实现一个json加载器,可以读取给定的json格式的文件并解析成Lua内存Table结构

要点1:判断Object类型的Key,如果是Int类型的字符串,需要转化成Number类型

要点2:不需要额外处理null、nan、inf等特殊类型的结构(默认文件中不存在)

要点3:全部使用utf-8编码,不需要额外处理中文字符的问题

要点4: 禁止引入第三方库实现功能

示例:

如源文件格式

{"1":{"a":100}}

解析后可以如下打印

local v = JsonLoader.parse(input_file)

print (v1.a) --> 100

3. 实现类似于C++的对象以及继承

有基类表 BaseObject

其拥有函数

function BaseObject:new()

--construct

end

function BaseObject:myFunc()

print("call BaseObject:myFunc")

end

function BaseObject:myFunc2()

print("call BaseObject:myFunc")

end

派生类 MyObject继承于BaseObject,并重写myFunc2使其输出"call MyObject:myFunc2"

例:

local obj = MyObject:new()

obj:myFunc()

obj:myFunc2()

输出:

call BaseObject:myFunc

call MyObject:myFunc2

4. 实现一个事件系统EventSystem

接口:

AddListener(event, handler)

RemoveListener(handler)

Dispatch(event)

注:event类型可以是字符串或数字

要求:handler能够支持对于问题3中的对象函数的绑定,如两个MyObject对象Obj1和Obj2,对于相同的一个事件MyEvent1,使用Obj1:myFunc和Obj2:myFunc2进行监听,当调用EventSystem的Dispatch(MyEvent1) 时,能够输出:

call BaseObject:myFunc

call MyObject:myFunc2

4.1 针对"对象函数"的绑定,EventSystem需要新增一个接口

RemoveObjectListeners(Obj)

将对象作为参数传入,可以移除所有此对象上所绑定的handler。如对象Obj1将MyEvent1和MyEvent2分别绑定到了myFunc()和myFunc2()上,当调用EventSystem的RemoveObjectListeners(Obj1)时,绑定将取消(MyEvent1和MyEvent2在派发时,Obj1的myFunc和myFunc2不会被调用);

相关推荐
益莱储中国42 分钟前
深度解析:RF 实验室从 5G迈向 6G 的过程中保持技术领先与设备升级的路径
开发语言·php
benchmark_cc2 小时前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
const_qiu2 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 个人资料管理的更新接口实现与坑
java·开发语言·交友
CoderYanger2 小时前
Java EE 进阶:4.Spring Web MVC 入门(第一弹)
java·开发语言·前端·spring·面试·java-ee·mvc
估值探索者3 小时前
【Python量化选股流水线 #04】选股器好不好用?「昨日候选→今日表现」回看验收
开发语言·python·股票数据·股票数据api接口
爱喝热水的呀哈喽4 小时前
HEJIAN RESEARCH
开发语言·matlab
白露与泡影4 小时前
后端 Java 面试核心八股汇总|高频面试题 + 解析,覆盖基础到进阶
java·开发语言·面试
xifangge20254 小时前
基于 JavaScript 实现 CNC 数控切削参数与螺纹公差纯前端核算引擎
开发语言·前端·javascript
“AI国潮设计-小江”4 小时前
【AIGC实战】Python+SDXL批量生成「潮汕英歌舞冰淇淋蛋糕&红桃粿咖啡」IP,固定角色形象批量出甜品商业效果图
开发语言·人工智能·python·prompt·aigc