monday sunday sunday
一樣,都指向該錶。
a.a.a.a=3,執行的是該錶的索引 a 賦值為3,之後的a.a.a.a將會引發異常,因現a.a=3,而非表。
在方括號裡寫索引值
tab=
for i,j in pairs(tab) do
io.write(">",i,">>",j,"\n")
end
function ans_s(t,x)
local sp=t[1]
for i=2,#t do
sp=sp+t[i]*x^(i-1)
endreturn sp
end
function ans(t,x)
local sp=t[1]
local dp=x
for i=2,#t do
sp=sp+dp*t[i]
dp=dp*x
endreturn sp
end
對比ipairs和pairs迭代器迴圈次數
function ispair(t)
local x,y
for i in pairs(t) do
x=iend
for i in ipairs(t) do
y=iend
if x~=y then
return false
else
return true
endend
function movetable(t1,t2,n)
table.move(t1,1,#t1,n,t2)
return t2
end
簡單二分優化實現表字串元素連線函式
function tabconcat(tab)
local len,con=0,0
len=#tab
repeat
if len%2==1 then
len=len-1
con=1
else
con=0
endfor i=1,len/2,1 do
tab[i]=tab[2*i-1]..tab[2*i]
endif con==1 then
tab[len/2+1]=tab[len+1]
len=len/2+1
else
len=len/2
enduntil len==1
return tab[1]
end
與標準庫table.concat函式進行對比測試。
function test(tm)
print(">> ",tm," * a concat")
tab1={}
for i=1,tm do
tab1[i]="a"
endtime=os.clock()
str1=tabconcat(tab1)
print(os.clock()-time,#str1)
tab2={}
for i=1,tm do
tab2[i]="a"
endtime=os.clock()
str2=table.concat(tab2)
print(os.clock()-time,#str2)
endtest(1000000)
test(10000000)
test(100000000)
測試結果:
>> 1000000 * a concat
0.384 1000000
0.191 1000000
>> 10000000 * a concat
4.168 10000000
1.981 10000000
>> 100000000 * a concat
43.36 100000000
19.721 100000000
時間大約是標準庫的二倍。 《Lua程式設計 第4版 》 第7章練習答案
function exercise7 1and2 filename1,filename2 local inputf,outputf if filename1 and filename2 then inputf io.open filename1,r local filetest io.open fi...
《Lua程式設計 第4版 》 第9章練習答案
lua的閉包真的很強大!function derivative f,delta delta delta or 1e 5 return function x return f x delta f x delta endendfunction integral f,delta delta delta o...
Lua程式設計第4版第6章課後練習答案
6.1 略 6.2 用lselect 2,函式 6.3function f63 local t table.pack t t.n nil t.n t.n 1return table.unpack t end print f63 2 3,4 5 6.4 說下思路 pair每乙個元素,把每個元素都隨機從...