Lua学习随笔之loadstring

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的值当作一个函数执行而非一个字符串

猜你喜欢

转载自blog.csdn.net/u013274257/article/details/19167871