루아에서 메타 테이블을 사용하지 않고 표를 인쇄 할 수 있습니까? 루아에서 로베르토의 책 프로그램에서루아에서 메타 테이블이없는 표를 인쇄하십시오
, 그는 "기능 print
는 항상 출력 형식을 tostring
를 호출"언급한다. 그것은 메타 테이블없이 할 수 없습니다
> a = {}
> a.tostring = function() return "Lua is cool" end
> print(a)
table: 0x24038c0
루아에서 메타 테이블을 사용하지 않고 표를 인쇄 할 수 있습니까? 루아에서 로베르토의 책 프로그램에서루아에서 메타 테이블이없는 표를 인쇄하십시오
, 그는 "기능 print
는 항상 출력 형식을 tostring
를 호출"언급한다. 그것은 메타 테이블없이 할 수 없습니다
> a = {}
> a.tostring = function() return "Lua is cool" end
> print(a)
table: 0x24038c0
: 내 테이블에 tostring
을 무시한다면, 나는 다음과 같은 결과를 얻을 수 있습니다.
기능
tostring
를 호출합니다.
당신이 이것을 잘못 이해했습니다. 여기서 tostring
은 테이블의 필드가 아닌 tostring
함수입니다. 즉, print(t)
은 print(tosstring(t))
으로 전화 할 것입니다.
테이블의 경우 tostring(t)
은 메타 메서드가 __tostring
인지 확인한 다음 그 결과로 사용합니다. 그래서 결국 메타 테이블이 필요합니다.
local t = {}
local mt = {__tostring = function() return "Hello Lua" end}
setmetatable(t, mt)
print(t)
'setmetatable (t, t)'를 호출하면'__tostring'은't'의 필드가 될 수 있습니다. – lhf
"테이블 인쇄"란 무엇을 의미합니까? 표에 각 키와 값을 인쇄한다는 의미입니까? 서브 테이블에 키와 값을 인쇄하고 싶습니까? 루아에는 테이블을 인쇄하는 "표준"방법이 없으므로, 당신이하고 싶은 것을 정확히 따라 달라집니다. –
일부 직렬화기를 가져 와서 출력을 인쇄하십시오. – FareakyGnome