lua学习笔记---9.文件加载

293 阅读1分钟

文件加载

loadstring:加载字符串,返回函数 5.3版本没有这个函数了

local f = loadstring('print("helol world")')
print(type(f))
f() --打印 helol world

loadfile:加载文件,返回函数

  • 必须加后缀
  • 文件用/隔开
local f = loadfile("Car.lua")
print(type(f))
local Car = f()
local car = Car:new()
car:speak()

dofile:执行文件(相当于loadfile和函数调用的结合)(不推荐使用)

local Car = dofile("Car.lua")           -- 加载同一目录下的Car.lua
local Car = dofile("Class/Car.lua")     -- 加载Class文件夹中的Car.lua
dofile("../Car.lua")                    -- 加载上一层目录下的Car.lua

require:请求文件,所有的文件路径都存储在package.path中

  • 不需要后缀
  • 文件用.隔开
  • 可以省略()
local Car = require("Car")
require "Car"       -- 加载同一目录下的Car.lua
require "class.Car"

dofile和require的区别:

  • dofile加载文件次数和执行次数相同
  • require加载相同目录文件时只执行一次

package.path

print(package.path)
-- 将Class目录添加到package.path中
package.path = package.path .. ";./Class/?.lua"
require "Car"       -- 加载Class文件夹中的Car.lua
print(package.path)