回答
從我目前對Lua的知識來看,純粹的Lua是不可能的。你必須潛入http://metalua.luaforge.net/才能達到此目的。也許我錯了,但是我沒有看到一種方法,除非你提供它,否則根據我的知識是不可能用純Lua來獲取變量名的。
我很好奇,因爲爲什麼你確實需要這一點,因爲我不知道爲什麼我不能建議最好的解決辦法,但你完全可以返回值,而不是:
function test()
return 5
end
x = 0
print(x) -- prints 0
x = test()
print(x) -- prints 5
如果你也能擺平將變量作爲字符串傳遞,你也可以這樣做:
function test(y)
_G[y] = 5
end
x = 0
print(x) -- prints 0
test("x")
print(x) -- prints 5
謝謝,只知道這是否可能,大多數語言都是這樣做的,我問自己是否有可能:) –
@MatteoGuglielmetti也許你可以通過'debug'得到原始的變量名,但我不會推薦它。 Lua是一種非常簡單的語言,不要期望它能夠完成某些主要語言的功能;) –
@MatteoGuglielmetti http://stackoverflow.com/a/1416843/5557841 - 所以有可能,但不推薦。 –
- 1. jQuery - 將函數內的變量傳遞給另一個函數
- 2. 如何將一個變量從一個函數傳遞給另一個函數?
- 3. 如何將一個變量從一個函數傳遞給另一個函數?
- 4. 如何將一個函數的變量傳遞給另一個函數?
- 5. printf函數將變量傳遞給javascript
- 6. 將變量傳遞給函數失敗
- 7. 將PHP變量傳遞給Javascript函數
- 8. 將變量傳遞給引用函數?
- 9. 將jQuery變量傳遞給Javascript函數
- 10. 將php變量傳遞給jQuery函數
- 11. 將$ _GET變量傳遞給javascript函數
- 12. 需要將變量傳遞給函數
- 13. 將php變量傳遞給Javascript函數
- 14. 將php變量傳遞給javascript函數
- 15. 將變量傳遞給函數
- 16. 將變量傳遞給jQuery .load函數
- 17. 將變量傳遞給.html()函數
- 18. 將變量傳遞給回調函數
- 19. 將Ajax變量傳遞給Codeigniter函數
- 20. Node.js將變量傳遞給父函數
- 21. jquery將此傳遞給變量函數
- 22. 將變量傳遞給函數範圍
- 23. 將變量傳遞給結構函數
- 24. 將xsl變量傳遞給javascript函數
- 25. 將變量傳遞給一個函數並更改其全局值
- 26. 將變量值傳遞給腳本函數中的變量(Javascript)
- 27. 將任意數量的一組變量傳遞給Python函數
- 28. Ajax:如何將變量函數傳遞給另一個jQuery
- 29. 可可Xcode - 如何將一個變量傳遞給函數
- 30. 如何將JavaScript變量值傳遞給另一個JavaScript函數?
我很好奇你爲什麼需要這個? –
你只需要用Lua(而不僅僅是Lua)進入不同的思維模式 - 即使某些語言有共同的「想法」,每種語言都有自己的思維模式)。 Lua的方法是允許一個函數返回多個值,而這又可以用來更新任何參數,只需返回修改後的值,並將其從函數外部重新分配給所需的變量。在我看來,這是一種「乾淨」的做事方式。你所描述的方式(許多語言允許的)實際上是有點冒險的,因爲你可能不會期望一個隱含的變量變化。 – tonypdmtr
除了關於語言和函數設計的哲學觀點之外,技術上你的前提是不正確的:你沒有傳遞一個變量,而是傳遞一個從表達式派生的值。你的表情恰好是非常簡單的'y'。然後在函數裏面'y'是一個參數,因此是一個不同的局部變量。關於改變參數或任何「變量」的價值,有更多的哲學論點。 –