如何重命名文件对象方法

时间:2017-01-25 08:57:28

标签: file methods lua rename

我试图复制文件对象的某些方法,因为我需要使用小写的大小写方法测试Lua API代码。所以我尝试了这个:

function openFile(n, m)
  local f = io.open(n, m)
  if(not f) then
    return status(nil,"openFile: Nofile: "..tostring(n))
  end
  f.Read  = f.read
  f.Write = f.write
  f.Close = f.close
  f.Flush = f.flush
  return f
end

考虑到文件对象有 file:readfile:write ...又名

但是给我一个如下错误:

Execution error:
.\ZeroBraineProjects/dvdlualib/fileapi.lua:41: attempt to index local 'f' (a userdata value)
我认为文件是简单的对象表。事实证明它是一个userdata对象。

那么我们如何使用大写案例方法进行阅读和写作?

1 个答案:

答案 0 :(得分:3)

您必须在f的metatable中设置这些字段:

local m = getmetatable(f)
m.Read  = m.read
m.Write = m.write
m.Close = m.close
m.Flush = m.flush