Lua笔记1-lua是什么

--[[  参考书籍:LUA程序设计和LUA5.1参考手册
-- lua 定义:
--
-- Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施。Lua 也能对面向对象编程,函数式编程,
-- 数据驱动式编程提供很好的支持。它可以作为一个强大、轻量的脚本语言,供任何需要的程序使用。Lua 以一个用 clean C 写成的库形式提供。
-- (所谓 Clean C,指的 ANSI C  C++ 中共通的一个子集)

作为一个扩展式语言,Lua 没有 "main" 程序的概念:它只能 嵌入 一个宿主程序中工作,这个宿主程序被称作embedding program 或简称为 host.
宿主程序可以通过调用函数执行一小段 Lua 代码,可以读写 Lua 变量,可以注入 C 函数让 Lua 代码调用。这些扩展的 C 函数,
可以大大的扩展了 Lua 可以处理事务的领域,这样就可以订制出各种语言,而它们共享一个统一的句法格式的框架。Lua 的官方发布版就包含了一个叫做
lua 的简单的宿主程序,它用 Lua 库提供了一个保证独立的 Lua 解释器。

这就是lua 语言, 被设计成一种过程式的编程语言,但是同时lua也支持面向对象的编程! lua可以建立类,并创建对象!
--
--
-- ]]--


--[[
-- 第二节 语言
--这一节从词法、语法、句法上描述 Lua 。换句话说,这一节描述了哪些 token (符记)是有效的,它们如何被组合起来,这些组合方式有什么含义。
--2.1 语法约定
--
--Lua 中用到的 名字(也称作 标识符)可以是任何非数字开头的字母、数字、下划线组成的字符串。 这符合几乎所有编程语言中关于名字的定义。
--(字母的定义依赖于当前环境:系统环境中定义的字母表中的字母都可以被用于标识符。) 标识符用来命名变量,或作为表的域名
-- 下面的关键字是保留的,不能用作名字:

     and       break     do        else      elseif
     end       false     for       function  if
     in        local     nil       not       or
     repeat    return    then      true      until     while

--Lua 是一个大小写敏感的语言: and 是一个保留字,但是 And  AND 则是两个不同的合法的名字。
--
-- 数字常量可以分两部分写,十进制底数部分和十进制的指数部分。指数部分是可选的。 Lua 也支持十六进制整数常量,只需要在前面加上前缀 0x 
-- 下面是一些合法的数字常量的例子:

     3   3.0   3.1416   314.16e-2   0.31416E1   0xff   0x56
--
--]]--



--[[
--2.2 值与类型
--
--lua 是一种 动态类型语言。 这意味着变量没有类型,只有值才有类型。 语言中不存在类型定义。而所有的值本身携带它们自己的类型信息。
--Lua 中的所有值都是一致 (first-class) 的。 这意味着所有的值都可以被放在变量里,当作参数传递到另一个函数中,并被函数作为结果返回。
--Lua 中有八种基本类型: nil, boolean, number, string, function, userdata, thread, and table. Nil 类型只有一种值 nil 
--它的主要用途用于标表识和别的任何值的差异; 通常,当需要描述一个无意义的值时会用到它。
--
userdata 类型用来将任意 C 数据保存在 Lua 变量中。 这个类型相当于一块原生的内存,除了赋值和相同性判断,Lua 没有为之预定义任何操作。
然而,通过使用 metatable (元表) ,程序员可以为 userdata 自定义一组操作 (参见 §2.8)。 userdata 不能在 Lua 中创建出来,
也不能在 Lua 中修改。这样的操作只能通过 C API。 这一点保证了宿主程序完全掌管其中的数据。

thread 类型用来区别独立的执行线程,它被用来实现 coroutine (协同例程)(参见 §2.11)。 不要把 Lua 线程跟操作系统的线程搞混。
Lua 可以在所有的系统上提供对 coroutine 的支持,即使系统并不支持线程。

table 类型实现了一个关联数组。也就是说, 数组可以用任何东西(除了nil)做索引,而不限于数字。 table 可以以不同类型的值构成;它可以包含
所有的类型的值(除 nil 外)。 table  lua 中唯一的一种数据结构;它可以用来描述原始的数组、符号表、集合、 记录、图、树、等等。
用于表述记录时,lua 使用域名作为索引。 语言本身采用一种语法糖,支持以 a.name 的形式表示 a["name"]。 有很多形式用于在 lua 中创建一个
table 
跟索引一样, table 每个域中的值也可以是任何类型(除 nil外)。 特别的,因为函数本身也是值,所以 table 的域中也可以放函数。 这样 table
中就可以有一些 methods 了 (参见see §2.5.9)。

table function thread ,和 (full) userdata 这些类型的值是所谓的对象: 变量本身并不会真正的存放它们的值,而只是放了一个对对象
的引用。赋值,参数传递,函数返回,都是对这些对象的引用进行操作; 这些操作不会做暗地里做任何性质的拷贝。

库函数 type 可以返回一个描述给定值的类型的字符串。
--
--
-- ]]



print(type("abc"))
print(type("123"))
print(type("s"))

print(type(123))

print(type(string))
print(type(table))
print(type(nil))


a=123
print(a)

a=nil  --将全局变量赋值为nil,等同于删除a
print(a)


print(#"abcde")     --获取字符串的长度

a, b, c = 0, 1

print(a,b,c)             --> 0   1   nil


print(abc)  --abc默认值为nil


--[[
-- 类型转换
-- tonumber,tostring
--
--
-- ]]--

print(10 .. "abc")  --操作是字符串的链接符号,注意abc必须用引号引起来,否则abc的值为nilnil不能做链接操作。

print("10" + 10) --字符类型和number类型进行+操作,lua会自动将 string类型转换为number

print(tostring(10) == "10")
print(10 .."" == "10")

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值