lua类型和值

  lua是动态类型语言,变量不要类型定义。lua中有8个基本类型分别为:nil、boolean、number、string、userdata、function、thread和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(true))                    --> boolean
6 print(type(nil))                    --> nil
7 print(type(type(X)))                --> string

  变量没有预定义的类型,每一个变量都可能包含任一种类型的值。

1 print(type(a))    --> nil   (‘a‘ is not initialized)
2 a = 10
3 print(type(a))    --> number
4 a = "a string!!"
5 print(type(a))    --> string
6 a = print            -- yes, this is valid!
7 a(type(a))            --> function

  注意上面的最后两行,我们可以使用function像使用其它值一样使用。

  1、Nil

  Lua中特殊的类型,他只有一个值:nil。一个全局变量没有被赋值以前默认值为nil。给全局变量赋值nil可以删除该变量。

  2、Boolean

  两个值false和true。但要注意Lua中所有的值都可以作为条件。在控制结构的条件中除了false和nil为假,其它值都为真。所以Lua认为0和空串都是真。

  3、Number

  表示实数,Lua中没有整数。一般有个错误的看房CPU运算浮点数比整数慢。事实不是如此,用实数代替整数不会有什么误差(除非数字大于100,000,000,000,000)。Lua的numbers可以处理任何长整数不用担心误差。

  4、String

  Lua是8位字节,所以字符串可以包含任何数值字符,包括嵌入的0。这意味着你可以存储任意的二进制数据在一个字符串里。Lua中字符串是不可以修改的,你可以创建一个新的变量存放你要的字符串。

1 a = "one string"
2 b = string.gsub(a, "one", "another")    -- change string parts
3 print(a)            --> one string
4 print(b)            --> another string

  string和其他对象一样,Lua自动进行内存分配和释放。可以使用单引号或者双引号表示字符串。对于字符串中含有引号情况还可以使用转移符\来表示。

 1 a = "a line"
 2 b = ‘another line‘
 3
 4 --Lua中的转移符
 5 \a bell
 6 \b back space                     -- 后退
 7 \f form feed                    -- 换页
 8 \n newline                        -- 换行
 9 \r carriage return            -- 回车
10 \t horizontal tab                -- 制表
11 \v vertical tab
12 \\ backslash                     -- "\"
13 \" double quote                -- 双引号
14 \‘ single quote                -- 单引号
15
16 \[ left square bracket         -- 左中括号
17 \] right square bracket         -- 右中括号

  还可以使用[[...]]表示字符串。这种形式的字符串可以包含多行,可以嵌套且不会解释转义序列,如果第一个字符是换行符会被自动忽略掉。这种形式的字符串用来包含一段代码是非常方便的。 

 1 page = [[
 2 <HTML>
 3 <HEAD>
 4 <TITLE>An HTML Page</TITLE>
 5 </HEAD>
 6 <BODY>
 7 Lua
 8 [[a text between double brackets]]
 9 </BODY>
10 </HTML>
11 ]]

  运行时,Lua会自动在string和number之间自动进行类型转换,当一个字符串使用算术操作符时,string就会被转成数字。反过来,当Lua期望一个string而碰到数字时,会将数字转成string。

1 print("10" + 1)                --> 11
2 print("10 + 1")                --> 10 + 1
3 print("-5.3e - 10" * "2")    --> -1.06e-09
4 print("hello" + 1)            -- ERROR (cannot convert "hello")
5
6 print(10 .. 20)        --> 1020

  尽管字符串和数字可以自动转换,但两者是不同的,像10==“10”这样的比较永远都是错的。如果需要显示将string转成数字可以使用函数tonumber(),如果string不是正确的数字该函数讲返回nil。反之,可以调用tostring()将数字转成字符串。

 1 local line = "jjj"
 2 n = tonumber(line)        -- try to convert it to a number
 3 if n == nil then
 4     print(line .. " is not a valid number")
 5 else
 6     print(n*2)
 7 end
 8
 9 print(tostring(10) == "10")        --> true
10 print(10 .. "" == "10")            --> true

  ..在Lua中是字符串连接符,当在一个数字后面写..时,必须加上空格以防止被解释错。

  5、Function

  函数是第一类值(和其他变量相同),意味着函数可以存储在变量中,可以作为函数的参数,也可以作为函数的返回值。Lua可以调用lua或者C实现的函数,Lua所有标准库都是用C实现的。标准库包括string库、table库、I/O库、OS库、算术库、debug库。

  6 Userdata and Thread

  userdata可以将C数据存放在Lua变量中,userdata在LUa中除了赋值和相等比较外没有预定义的操作。userdata用来描述应用程序或者使用C实现的库创建的新类型。thread以后在介绍。

lua类型和值

时间: 2024-11-10 01:27:46

lua类型和值的相关文章

Java原始类型和值

原始类型和值 java虚拟机支持的原始数据类型包括运算类型.布尔类型和返回地址类型.运算类型包括整型和浮点型.    整型包括:    byte,8比特有正负的二进制整数,默认值是0:    short,16比特位有正负的二进制整数,默认值是0:    int,32比特位有正负的二进制整数,默认值是0:    long,16比特位有正负的二进制整数,默认值是0:    char,16比特位无符号整数表示基于多文种平台的联合码的值,用utf-16编码,默认值是null编码点(\u0000).  

Lua的类型和值

Lua的类型和值 (一)基础介绍 Lua是一种动态类型的语言,变量不需要做定义.Lua中有八种类型,分别是 nil -- 空 boolean -- 布尔 number -- 数字 string -- 字符串 userdata -- 自定义 function -- 函数 thread -- 线程 table -- 表 用type()方法可以识别变量的类型. 1 print(type(nil)) --> nil 2 print(type(true)) --> boolean 3 print(typ

类型和值

Lua是动态类型语言,变量不要类型定义.Lua中有8个基本类型分别为:nil.boolean.number.string.userdate.function.thread和table.函数type可以测试给定变量或者数值的类型. print(type(“Hello world”))           -->   string print(type(10.4*3))                      --> number print(type(print))              

JS的类型和值

1.类型 ECMAScript语言中所有的值都有一个对应的语言类型.ECMAScript语言类型包括Undefined.Null.Boolean.String.Number和Object. 对语言引擎和开发人员来说,类型是值的内部特征,它定义了值的行为,以使其区别于其他值. 内置类型 JavaScript有七种内置类型: 空值(null) 未定义(undefined) 布尔值(boolean) 数字(number) 字符串(string) 对象(object) 符号(symbol,ES6中新增)

第03章 对象、类型和值

本章介绍数据的存储和使用. 为了读取用户的输入,需要在内存中开辟出一块区域,存放用户数据,一般地我们称这块区域为对象.一个对象就是具有某种类型的存储区域,类型指定该区域可以放置什么样的数据.为了引用该区域,我们将该区域命名,称为变量. 一个变量就是内存中的一块具有特定类型的区域. 在C++中,整数放在int变量中,字符串放在string变量中,int, string就是类型. 一.输入 试看一个读取输入的程序: 1 #include <iostream> 2 using namespace s

lua学习笔记之类型和值

Lua学习笔记之类型和值 1.全局变量 全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil 如果需要删除一个全局变量,只需要将变量赋值为nil 2.词法约定 标识符:字母或者下划线开头的字母.下划线.数字序列,最好不要使用下划线家大写字母的标识符,因为lua的保留字也是这样的. 3.命令行方式 Lua[options][script[args]] -e:直接将命令传入lua Prompt>lua –e "print(

数据类型和typeof操作符

虽然学习js有一段时间了,但是对js的基础语法却是有些生疏.最近在看jquery源码,决定随带总结一些基础的语法知识.今天总结一下数据类型和typeof,这在写js的时候,是不得不知道的知识. 数据类型: js有5中基本的数据类型:undefined,Null,Boolean,Number,string;有一种复杂的数据类型:object,js不支持所有自定义的数据类型,所以所有变量的值都是以上类型. typeof:它的出现用来检测变量的数据类型,它可能的值有6种. undefined---如果

#2.bool类型和 const

#2.bool类型和const类型 bool类型 const限定符 const与#define 结构体内存对齐 bool类型 逻辑型也称布尔型,其取值为true(逻辑真)和false(逻辑假),存储字节数在不同编译系统中可能有所不同,VC++中为1个字节. 声明方式:   bool result; result=true; 可以当作整数用(true一般为1,false为0) 把其它类型的值转换为布尔值时,非零值转换为true,零值转换为false const限定符 用const给字面常量起个名字

lua 类支持属性不能被修改

背景 lua是类是借助表的来实现的, 类被定义后, 在使用场景下, 不希望被修改.如果被修改, 则影响的类的原始定义, 影响所有使用类的地方. 例如: --- router.lua class file router = class() router.xxx = function xxx end --- app.lua router.xxx = function yyy end 故提出新的要求: 1. 对于类在应用场景下,不能修改属性. 2. 对于类在应用场景下, 不能添加新的属性. 类的实现代