lua学习踩坑日记--表/键值对

工作需要学习lua,对于表和c#等字典的联系和区别异常混乱,特此记录下本次lua学习中出现的语法错误和个人理解

lua定义第一层表只需要

global tablename={} 或 local tablename={}        --声明并初始化为空表
--(全局变量可以省略global)

注意此时初始化的空表已经不等于nil空值了,至少编辑器报错判定它已经不是nil了

tablename[下标] 并不代表是类型为表tablename的数组,而是 表tablename的键 为 “下标” 时的值

反观c#对键值对的定义声明和调用:

// 创建一个字典
        Dictionary<string, int> ageDictionary = new Dictionary<string, int>();
 
        // 添加键值对
        ageDictionary.Add("Alice", 30);
        ageDictionary.Add("Bob", 25);
        ageDictionary.Add("Charlie", 28);
 
        // 遍历字典并打印键值对
        foreach (KeyValuePair<string, int> kvp in ageDictionary)
        {
            Console.WriteLine($"Name: {kvp.Key}, Age: {kvp.Value}");
        }

c#的键值对声明是直接给定了数据类型,给定的数据类型可以是自定义的,比之lua的好处是清晰明了,极大方便了声明

但相比lua的形式,c#键值对的缺点是找对应的key得调用方法去遍历查找与参数等值的key,而lua只需要写上下标像数组一样引用即可

笔者愚见,对于笔者而言,一下子要将lua的键值对表的下标和惯用的是数组的思路区别开又不完全区别开有点转不过弯,它就如它的定义——“表”,其实就是表的第一列,一个二维表(如下)

最外层表
外层下标1
外层下标1的里层新表
里层下标1……
里层下标2

外层下标2
外层下标3

我认为,lua和c#的另一个区别是,

lua必须先定义初始化外层,然后再根据 下标行的值 是否为表再进行处理,如果是表,判定这个表之前就得重新给下标所在行的值的表初始化,否则就会报空

而c#则是相反的,先定义里层的键值对,也不需要初始化,然后给外层键值对 拿去用就行

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值