#!/usr/bin/lua
--[[
虚变量
当一个方法返回多个值时,有些返回值有时候用不到,要是声明很多变量来一一接收,显然 不太合适(不是不能)。
Lua 提供了一个虚变量(dummy variable),以单个下划线('_')来命 名,用它来丢弃不需要的数值,仅仅起到占位的作用。
]]
local t = {name="tome",age=12,gender="boy"}
for _,v in pairs(t)
do
print(v)
end
--虚变量的应用
local _,finish = string.find("hello","he")
print("finish:",finish)
Lua Require函数
1. require会搜索目录加载文件
require使用的路径和普通我们看到的路径还有些区别,我们一般见到的路径都是一个目录列表。require的路径是一个模式列表,每一个模式指明一种由虚文件名
(require的参数)转成实文件名的方法。更明确地说,每一个模式是一个包含可选的问号的文件名。匹配的时候Lua会首先将问号用虚文件名替换,然后看是否有
这样的文件存在。如果不存在继续用同样的方法用第二个模式匹配
2. require会判断是否文件已经加载避免重复加载同一文件。由于上述特征,require在Lua中是加载库的更好的函数。
require会避免重复加载同一个文件两次。Lua保留一张所有已经加载的文件的列表(使用table保存)。如果一个加载的文件在表中存在require简单的返回;
表中保留加载的文件的虚名,而不是实文件名。所以如果你使用不同的虚文件名require同一个文件两次,将会加载两次该文件。比如require "foo"和require "foo.lua",
路径为"?;?.lua"将会加载foo.lua两次。我们也可以通过全局变量_LOADED访问文件名列表,这样我们就可以判断文件是否被加载过;同样我们也可以使用一点小技巧让
require加载一个文件两次。比如,require "foo"之后_LOADED["foo"]将不为nil,我们可以将其赋值为nil,require "foo.lua"将会再次加载该文件。
小结:require加载一个Lua文件,不论加载多少次,都是同一个对象