作者yzugsr (Bird)
看板Programming
標題Re: [問題] Lua在函數中產生資料與讀取問題
時間Sat Feb 9 12:44:39 2008
為什麼裡面syntax錯那麼多....
※ 引述《oohay (五黑)》之銘言:
: function a()
: a = ()
local a = {}
lua的table明明是 {} 不是 ()
在lua, function也是first-class object
你不加local a這個table會把原本的function蓋掉
: if a[0] == nil then
: print("foo")
: a[0] = ()
{}
: b(a[0])
: if a[0] == nil then
: print("foo")
: else
: print("ok")
: end
: c(a[0])
: else
: print("ok")
: end
: end
: function b(a)
: a = (1, 2)
{ } <= 這樣也不對
你在function裡面把a的參考指向另一個{1, 2}的table
但原本的table還是沒有變..
應該要
table.insert(a, 1)
table.insert(a, 2)
: end
: function c(a)
: if a == nil then
: print("nil")
: else
: print("foo ")
: print(a[0] .. a[1])
: end
: end
: a()
: 以上, 從a函式丟一個變數a, 在b函式產生一對資料指派給此變數, 在c函式打算
: 做該變數的資料處理.
: 但是印出的答案盡是foo foo foo, 果如其所說的what the fuck!
: 印出訊息也是 "attempt to index local <variable-name>"
: 我知道那是某個函數的local變數,
: 可是一旦要取用, 我只想要它的值, 而不是它這個物件的參考!!
我完全沒看到這個錯誤訊息
你給的code有syntax error不能跑 我改一改就沒錯誤了
: 你這個白痴Lua一直給我參考到那個Local幹嘛? 不是已經結束函式了嗎?
: 不是已經跳出scope外了嗎?
我寫一切都很正常啊 @@
官方的programming guide有沒有看完一遍
為Lua平反一下,尿不準別怪馬桶歪
: 你不講我還真不知道,原來我很想取用一個local變數,
: 直接告訴我在此區域看不見那個東西就好了,囉唆那麼多幹嘛?
: 寫個Lua程式,架構大一點,隨機性多一點, 最後就因為這種attempt to index LOCAL
: 而 *完全* 寫不下去.
: 超爛的程式語言!
有點受不了這說法....覺得爛就別用吧 =.=
他的定位本來就是fast, light-weight, embeddable scripting language
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.35.97
※ 編輯: yzugsr 來自: 123.193.35.97 (02/09 12:46)
推 Ross0916:覺得爛+1 所以不用+1 140.112.5.10 02/09 12:53
→ yzugsr:我是覺得Ruby, Python, Lua各有長處 123.193.35.97 02/09 13:11
→ yzugsr:Lua好在他的輕量 (反過來說就是功能和 123.193.35.97 02/09 13:12
→ yzugsr: syntax sugar少) 123.193.35.97 02/09 13:12
→ yzugsr:我自己是喜歡寫Ruby勝過Lua的 123.193.35.97 02/09 13:13
→ yzugsr:但我想也不用一昧否定Lua 123.193.35.97 02/09 13:14
推 oohay:線上改打錯的,發瘋時{}()不分 61.231.71.148 02/09 14:42
→ oohay:不過執行確認的版本倒沒錯 61.231.71.148 02/09 14:43
→ oohay:睡醒之前腦中想到一個解決辦法,頓時覺得 61.231.71.148 02/09 14:43
→ oohay:X! Lua超機車 61.231.71.148 02/09 14:44
→ oohay:所謂解決辦法就是同一份程式在那邊複貼一份 61.231.71.148 02/09 14:45