博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LUA 拾遗(编译-调试-运行)
阅读量:5068 次
发布时间:2019-06-12

本文共 1332 字,大约阅读时间需要 4 分钟。

(dofile - loadfile)

  dofile从LUA源码读入chunk编译为字节码并执行,loadfile则是执行字节码

function  dofile (filename)   local  f = assert(loadfile(filename))   return f() end

 

(loadstring)

  loadstring与loadfile 相似,只不过它不是从文件里读入chunk ,而是从一个串中读入。

local s = "print('LUA')"assert(loadstring(s))()

 

(require)

Lua 提供高级的 require 函数来加载运行库。粗略的说require 和dofile 完成同样的功

能但有两点不同:
1. require 会搜索目录加载文件
2. require 会判断是否文件已经加载避免重复加载同一文件。由于上述特征,require
在Lua 中是加载库的更好的函数。

 

 

(C  Packages)

local  path =  "/usr/local/lua/lib/libluasocket.so"local  f = loadlib(path, "luaopen_socket")

lua程序中使用loadlib导入动态库,出现错误

  attempt to call global 'loadlib' (a nil value)

修正方法:

luaconf.h文件中,

#undef LUA_COMPAT_LOADLIB
改成
#define LUA_COMPAT_LOADLIB
重新编译一个luac可执行文件。OK!!!

 

(异常和错误处理以及traceback)

  如果在Lua 中需要处理错误,需要使用pcall 函数封装你的代码。

local  status, err = pcall(function  () error({code=121}) end ) print(err.code)  -->  121
function  foo (str)  if type(str) ~= "string"  then    print(debug.traceback())    error("string expected", 2)  endendfoo(LUA)

>lua -e "io.stdout:setvbuf 'no'" "test.lua"

stack traceback:
test.lua:3: in function 'foo'
test.lua:9: in main chunk
[C]: ?
lua: test.lua:9: string expected
stack traceback:
[C]: in function 'error'
test.lua:4: in function 'foo'
test.lua:9: in main chunk
[C]: ?
>Exit code: 1

 

 

转载于:https://www.cnblogs.com/mark-huang/archive/2013/05/03/3058539.html

你可能感兴趣的文章
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
多服务器操作利器 - Polysh
查看>>
[LeetCode] Candy
查看>>
Jmeter学习系列----3 配置元件之计数器
查看>>
jQuery 自定义函数
查看>>
jq 杂
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
作业一
查看>>
AJAX
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
Git的使用--打tag
查看>>
F# 编程 借助 F# 构建 MVVM 应用程序
查看>>
ACFUN切换代码自用。。。
查看>>
网卡流量检测.py
查看>>
【转】Android的权限permission
查看>>