2009-09-13 33 views
10

Ví dụ,Lua: Lấy tên đen của tham số

function test (a) 
    name = nameof(a) 
    print(name) 
end 

test(def) --should print "def" 

Có bất kỳ thủ đoạn lua để thực hiện một cái gì đó tương tự như trên?


Không phải bất cứ ai cần phải giải thích lý do tại sao họ muốn làm một cái gì đó; một số người trở nên gắt gỏng nếu họ không được đưa ra một ví dụ thực tế. Vì vậy:

local function registerTestSuite(suite) 
    if (LUnit) then 
     LUnit:AddTestSuite(
      HotNReady.."_"..GetVariableName(suite), --HotNReady_PizzaTestSuite 
      suite); 
    end; 
end; 
+2

Tại sao bạn muốn thực hiện việc này? Bạn đang cố giải quyết vấn đề gì? – lhf

+0

Tôi muốn có thể viết đối tượng declare_object1. Ngay bây giờ tôi phải viết declare_object "object1". declare_object là một hàm. – jameszhao00

+1

Tôi không chắc chắn những gì bạn đang yêu cầu sẽ giúp bạn nâng niềng răng trong một cuộc gọi chức năng. –

Trả lời

3

Điều bạn yêu cầu không thể thực hiện được trong Lua thuần túy.

Nếu bạn thực sự cần điều này, hãy thử sử dụng số Metalua.

+0

Tôi không chắc chắn tại sao câu trả lời cho các trường hợp cạnh thường cần phải bao gồm sự hoài nghi cấp tiến về việc người hỏi ** có thực sự ** cần làm điều họ dành thời gian để đặt câu hỏi hay không. Upvoted dù sao. –

1

Hãy thử sử dụng debug library.

Bạn có thể sử dụng debug.getlocal ([thread,] level, local) để nhận thông tin về biến cục bộ, bao gồm cả tên của nó.

+0

Nó có thể bán được. Các "địa phương" trong debug.getlocal ([thread,] cấp, địa phương) thực sự là chỉ số vào một mảng các biến khai báo địa phương trong ngăn xếp được biểu thị bằng cấp. – jameszhao00

+0

Vâng, bạn nói đúng. Nó không thực sự là giải pháp mục đích chung mà bạn đang tìm kiếm. –

+0

Đừng quên rằng module 'debug' được khuyến khích mạnh mẽ trong mã sản xuất không phải là trình gỡ lỗi. – RBerteig

Các vấn đề liên quan