如何知道某个值是否是一个luasocket对象?

时间:2011-10-22 23:58:34

标签: lua luasocket

我注意到luasocket似乎没有提供一种方法来知道某个值是否是一个luasocket对象。

比较元表的常用方法不起作用,因为不同的套接字对象类型具有不同的元表。 在metatable中似乎没有任何一致的值来检查(例如,相同的__tosting metamethods)

那么:如何知道他们拥有的值是否是一个luasocket对象?

2 个答案:

答案 0 :(得分:1)

因为你只想知道它是否是一个LuaSocket对象所以你可以得到fd,为什么不只是看看对象是否有一个getfd()方法?作为奖励,这将适用于在对象上提供此方法的当前和未来库,而不仅仅是LuaSocket。

此技术称为'duck typing'

答案 1 :(得分:0)

你没有。一般来说,你应该自己跟踪这类事情。您相信您传递的对象是您期望的对象。如果您不确定,可以随时使用pcall来调用它们上的函数并捕获任何错误。