我注意到luasocket似乎没有提供一种方法来知道值是否是一个luasocket对象。如何知道一个值是否是一个luasocket对象?
比较metatables的常用方法不起作用,因为不同的套接字对象类型具有不同的metatables。 目前似乎没有在元表任何一致的值,以检查是(例如相同__tosting
元方法)
所以说:怎么能知道他们是否有一个值是luasocket对象?
我注意到luasocket似乎没有提供一种方法来知道值是否是一个luasocket对象。如何知道一个值是否是一个luasocket对象?
比较metatables的常用方法不起作用,因为不同的套接字对象类型具有不同的metatables。 目前似乎没有在元表任何一致的值,以检查是(例如相同__tosting
元方法)
所以说:怎么能知道他们是否有一个值是luasocket对象?
既然你只想知道它是否是一个LuaSocket对象,所以你可以得到fd,为什么不看看对象是否有getfd()方法呢?作为奖励,这将适用于目前和未来的图书馆,而不仅仅是LuaSocket。
这种技术被称为'duck typing'。
你没有。一般来说,你需要自己跟踪这类事情。你相信你所传递的对象是你期望的。如果你不确定,你总是可以使用pcall
来调用它们的函数并捕获任何错误。
我问,因为我想创建一个函数来获取传递给它的fd:使用lua文件对象,luasocket对象,libev对象,apr对象....并且我需要告诉它们之间的区别知道使用哪个例程。 – daurnimator
@daurnimator:什么是“fd”? –
文件描述符http://en.wikipedia.org/wiki/File_descriptor – daurnimator
我假设你可以检查文件metatable ;然后检查getfd方法;然后错误... – daurnimator