找回密码
 register

QQ登录

只需一步,快速开始

[*LUA4*] [LUA基础]第二章 类型和值 空值 数值类型

[复制链接]

[*LUA4*] [LUA基础]第二章 类型和值 空值 数值类型

[复制链接]
Waylee

主题

0

回帖

7912

积分

仙帝

积分
7912
Waylee 2022-10-12 23:22 | 显示全部楼层 |阅读模式

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?register

×
文本适用于Lua 4.0


Lua是动态类型语言,变量不要类型定义。Lua中有8个基本类型分别为:nil(空)、number(数字)、string(字符串)、userdata(自定有类型)、function(函数)和table(表)。函数type可以测试给定变量或者值的类型。


  1. print(type("Hello world"))      --> string
  2. print(type(10.4*3))             --> number
  3. print(type(print))              --> function
  4. print(type(type))               --> function
  5. print(type(nil))                --> nil
  6. print(type(type(X)))            --> string
复制代码

最后一行将永远返回"string",而无关乎X这个值的内容。这是因为type函数总是返回一个字符串。
变量没有预定义的类型,每一个变量都可能包含任一种类型的值:

  1. print(type(a))    --> nil   ('a' 尚未初始化)
  2. a = 10
  3. print(type(a))    --> number
  4. a = "a string!!"
  5. print(type(a))    --> string
  6. a = print         -- 是的,这是合法的!
  7. a(type(a))        --> function
复制代码

请注意最后两行。在Lua中,函数是作为“第一类值(first-class value)”来看待的,可以像其他值一样来操作一个函数值(提前预习概念,后续再详细讨论)。
将一个变量用于不同类型,通常会导致混乱的代码,但有时明智地使用这种特性会带来便利。例如,在异常情况下,可以返回一个nil以区别于其他正常的返回值。
2.1、空值类型(nil)
Lua中特殊的类型,他只有一个值:nil;一个全局变量没有被赋值以前默认值为nil;给全局变量负nil可以删除该变量。
2.2、数值类型(number)
表示实数,Lua中没有整数。一般有个错误的看法CPU运算浮点数比整数慢。事实不是如此,用实数代替整数不会有什么误差(除非数字大于100,000,000,000,000)。Lua的number可以处理任何长整数不用担心误差。你也可以在编译Lua的时候使用长整型或者单精度浮点型代替number,在一些平台硬件不支持浮点数的情况下这个特性是非常有用的,和其他语言类似,数字常量的小数部分和指数部分都是可选的,数字常量的例子:
  1. 4      0.4    4.57e-3       0.3e12     5e+20
复制代码

相关帖子

雪舞知识库 | 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 |网站地图|天天打卡

GMT+8, 2024-11-24 10:19 , Processed in 0.061365 second(s), 11 queries , Redis On.

Powered by XueWu Licensed

Copyright © Tencent Cloud.

快速回复 返回顶部 返回列表