现在的位置: 首页 > 综合 > 正文

编译、运行、错误

2019年08月06日 ⁄ 综合 ⁄ 共 1879字 ⁄ 字号 评论关闭

给自己看的,很乱,没整理。

 

----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------

-- 要不断的实践和练习,要有自己的总结和想法。核实自己的总结和想法的对错。了解书中的思路。

-- 只有把书上的都基本上弄明白了,再总结 和想法,单节、单章都可以。围绕书。

-- 要脑子里有这个东西,用的时候能想出来。

 

 

--最主要的就是 table 的元表 与元方法。面向对象编程。c与lua 的相互调用。

 

-- 多少都有一点了解了。基本上不怎么了解的 就剩下 userdate 和 协程了。

 

-- 函数、闭包、编译执行。模块、环境。

 

-- 编译、执行、错误分析。

--[[

f = loadstring("i=i+1")

i = 0

for i =1 ,10,2 do

f();

end

 

print(i)

 

f = loadstring("local x =10 return x+20")

 

print(f())

 

-- loadstring 装载程序块。  loadfile、dofile 是装载文件。loadfile 只编译一次,可以多次运行

dofile 运行一次,编译一次。loadfile 有错误会返回nil 和错误信息。

 

loadfile("add.lua") add.lua 只是被编译了,没有被定义。

]]

 

 

--[[

-- loadstring 总是在全局变量中编译它的串。

 

local i =100

 

f= loadstring(" i = i+ 1")

g= function() i = i+1 end

f() --f()访问全局变量。会报错。

g() -- i = 101

print(i)

]]

 

 

 

--[[

 

--loadstring 一般用于程序外部的代码。一般是一段语句。如果想要加载表达式。需要在表达式前加return。

 

print "enter your expression:"

local l = io.read()

local func = assert(loadstring("return " .. l))

print("the value of your expression is " .. func()) --为什么不能输入字符串。

 

]]

 

 

-- require  会自动搜索文件目录,加载文件。会判断文件是否加载。避免同一文件多次加载。

 

-- assert 会报错。发出错误信息。

--print("please input the number")

--sn = assert(io.read("*number"),"invalid number")

--print(n)

 

 

--[[

print("please input a number ")

 

n = io.read()

 

assert(tonumber(n),"invalid number  "..n.."  is not a number")

]]

 

--assert(1==2,"1~=2")

 

--file = assert(io.open("jing.lua","r"))

 

--pcall 再保护模式下执行函数内容。同时捕获所有的异常和错误。

 

--[[

local status , err = pcall(function() a = "a" + 1 end)

 

print(err)

 

local status ,err = pcall(function() error("myerror") end)

print(err)

 

]]

--[[

function foo(str)

if  type(str) ~= "string" then

error("string expect")

end

end

 

foo({ x =1 })

 

]]

 

-- 自己的缺点: 不实践。总给自己坏的心理暗示。

 

 

-- 两个常用的debug 函数。debug.debug  和  debug.traceback

 

--print(debug.traceback())

 

--编译、执行、错误处理

--主要知识点:1、loadstring  2 dofile 与 loadfile   现在是luaL_dofile ?

--  3、assert 的处理。 编译与运行。 是 assert 还是 error()。

 

---------------------------------------------------------------------------------

 

-- 环境 主要是 ——G 的 替换 和相当的 备份

抱歉!评论已关闭.