Torch7 系列教程之Lua语言学习教程(一)

0.学习导言

在学习Torch7深度神经网络学习库之前,我们首先来学习一些基本的Lua语言基础知识。Lua语言是一种轻量级的脚本语言,它是用标准C语言编写并以源代码形式开放,其设计的基本目的是为了嵌入应用程序中,从而为程序提供灵活的扩展和定制功能。
Lua语言具有以下基本的特性:

  • 轻量级:它用标准C语言编写并以源代码的形式开放,编译之后仅仅一百余K,可以很方便的嵌入别的程序中。
  • 可扩展性:Lua提供了非常易于使用的扩展接口和机制:由宿主语言(通常是C和C++)提供这些功能,Lua可以使用它们,就像本来就内置功能一样。
  • 其他特性:
    • 支持面向过程式编程和函数式编程;
    • 自动内存管理机制:只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;
    • 语言内置模式匹配:闭包;函数也可以作为一个值;提供多线程支持;
    • 通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,例如数据抽象,虚函数,继承和重载等等。

1.Lua语法基础

1.1 基本语法

注释
单行注释以及多行注释

-- 这里表示单行注释的意思
-- [[
这里表示多行注释的意思
多行注释
-- ]]

标识符

  • 标识符用于定义一个变量,函数获取其他用户定义的项。标识符以一个字母A到Z或者是a到z或者下划线开头加上0个或者多个字母,下划线或者数字
  • 最好不要使用下划线加大写字母的标识符
  • Lua不允许使用特殊字符@,$,和%来定义标识符,Lua是一个大小写区分的编程语言。

关键词
以下例举出了Lua的保留关键字,这些字符不能作为常量或者其他用户定义标识符:

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

一般约定,以下划线开头链接一串大写字母的名字(例如_VERSION)被用作保留用于Lua内部全局变量。

Chunks
Chunk 是一系列语句,Lua 执行的每一块语句,比如一个文件或者交互模式下的每
一行都是一个 Chunk。一个 Chunk 可以是一个语句,也可以是一系列语句的组合,还可以是函数,Chunk可以很大。
每个语句结尾的分号(;)是可选的,但如果同一行有多个语句最好用“;”分开。

变量
变量在使用之前,必须在代码中进行声明变量,即创建该变量。Lua语言中的变量由三种变量:全局变量、局部变量、表中的域
在默认情况下,变量总是认为是全局的。
全局变量不需要声明,给一个变量赋值之后即可以创建这个全局变量,访问一个没有初始化的全局变量会得到结果nil。
局部变量与全局变量不同,局部变量只在被声明的那个代码块内有效。代码块是指:一个控制结构内,一个函数体,或者是一个chunk(变量被声明的那个文件或者文本串)。应该尽可能的使用局部变量,它有两个好处:

  1. 避免命名冲突;
  2. 访问局部变量的速度要比全局变量更快。
    例如以下语句表达了局部变量和全局变量之间的关系
x = 10
local i = 1		-- local to the chunk
while i<x do
	local x = i*2		-- local to the chunk
	print (x)		-- 2,4,6,8,...
	i = i + 1
end
if i > 20 then
	local x 		-- local to the "then" body
	x = 20
	print(x + 2)
else
	print(x)		-- 10 (the global value)
end
print(x)

1.2 数据类型

Lua是一个动态类型的语言,变量不要定义类型,只需要为变量赋值即可。值可以存储在变量中,作为参数传递或者在结果中返回。
Lua中有8个基本类型,分别为:nil、boolean、number、string、userdata、function、thread和table。关于这几种数据类型的描述,可以由以下列表进行描述:

数据类型 描述
nil 这个类型只有nil值属于该类型中,表示一个无效值(在条件表达式中表示false)
boolean 包含有两个值:false和true
number 表示双精度类型的实浮点数
string 字符串由一对双引号或者单引号来表示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值