What have you found for these years?

2011-03-02

lua (0)

還真是有點莫名其妙呀.. 因為 buzz 上的討論,我想或許
可以試著把之前的 puzzle generator 翻譯成 lua, 藉此稍微
熟悉一下 lua. 因此稍微看了一下自己大概會用到的東西,
例如怎麼操作 array (table), 如果要實作 rotate 要怎麼做。

然後注意到 array index 是從 1 開始算,實在不太高興。
於是想試著轉換看看,就寫下了:

a = {'a', 'b', 'c'}
for i,v in pairs(a) do
  a[i-1] = v
end
然後分別把 index 和 value 印出來瞧瞧:
for i,v in pairs(a) do
  print(i)
end

for i,v in pairs(a) do
  print(v)
end
結果 index 得到 1, 2, 3, 0, -3, -1, -2
而 value 得到 b, c, c, a, a, a, a
試著用 print(#a) 印出 table 大小,也正常如 3 呀,
但怎麼轉成 pairs 就變得這麼詭異??就在我想貼出去
請教一下看看是怎麼回事之前,打到一半還沒送出去,
想說送出去之前順便附上 luajit 的結果,結果我就傻眼惹。

luajit 的結果完全符合我的預期啊!也就是 0,1,2,3 與 a,b,c,c

也罷,不玩 lua 了,直接用 luajit 好了。本來想說 luajit 好像
沒有支援 readline, interactive 環境用起來比較不方便。但反正
lua 的也不怎麼好用,完全不能跟 irb/ripl 相比,那就都用檔案吧

版本是
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio

LuaJIT 2.0.0-beta6 -- Copyright (C) 2005-2011 Mike Pall. http://luajit.org/

p.s. 是說我知道在 traversal 的過程修改被 traverse 的物件本來
就是不妥當的寫法,可是還是有不少實作有做這部份,而且 scripting
language 還是讓人方便一點比較好,尤其是 lua 這種強調 mutation 的..?
效率什麼的,也理所當然是 luajit 比較強.... then why not?

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0