我注意到luasocket似乎没有提供一种方法来知道某个值是否是一个luasocket对象。
比较元表的常用方法不起作用,因为不同的套接字对象类型具有不同的元表。
在metatable中似乎没有任何一致的值来检查(例如,相同的__tosting
metamethods)
那么:如何知道他们拥有的值是否是一个luasocket对象?
答案 0 :(得分:1)
因为你只想知道它是否是一个LuaSocket对象所以你可以得到fd,为什么不只是看看对象是否有一个getfd()方法?作为奖励,这将适用于在对象上提供此方法的当前和未来库,而不仅仅是LuaSocket。
此技术称为'duck typing'。
答案 1 :(得分:0)
你没有。一般来说,你应该自己跟踪这类事情。您相信您传递的对象是您期望的对象。如果您不确定,可以随时使用pcall
来调用它们上的函数并捕获任何错误。