您的位置:首页 > 编程语言 > Lua

Lua学习随笔之loadstring

2014-02-13 17:29 295 查看
myTable = {7,1,13,6,89,4,56,2,54,6}

function GetMin(theTable)

    myString="myValue=math.min("

    --对myString进行初始化赋值:myValue=math.min(

    for index,value in ipairs(theTable) do

        myString=string.format("%s%d%s",myString,value,",")

    end

    --将myTable中的数字依次传入myString字符串中,显示为:myValue=math.min(数字1,数字2,数字3,...)

    --print(myString)

    --这里我们得到的结果将会是:myValue=math.min(7,1,13,6,89,4,56,2,54,6,

    myString=string.sub(myString,1,string.len(myString)-1)

    --对myString取子串重新赋值去除最后的","

    --print(myString)

    --这里我们得到的结果将会是:myValue=math.min(7,1,13,6,89,4,56,2,54,6

    myString=string.format("%s%s",myString,")")

    --myString="myValue=math.min(7,1,13,6,89,4,56,2,54,6)"    

    --给myString字符串加上最后的")"

    --print(myString)

    --这里我们得到的结果将会是:myValue=math.min(7,1,13,6,89,4,56,2,54,6)

   loadstring(myString)()

   --loadstring并非myValue=math.min(7,1,13,6,89,4,56,2,54,6)当作一个字符串执行,而是将myString后面的内容当成一个函数执行从而获取到myValue的值

    print(myString)

    print(myValue)

    return myValue

end

GetMin(myTable)

一开始一直搞不明白loadstring执行的是什么,重新编写一段例子进行调试对比

a="Hello World"

b="print(a)"

print(b)

loadstring(b)()

显示结果:

print(a)

Hello World

从上面的调试,可以看出来如果使用loadstring执行的话会把b的值当作一个函数执行而非一个字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: