luasocketは、値がルアソケットオブジェクトであるかどうかを知る方法を提供していないようです。値がluasocketオブジェクトかどうかを知るには?
メタオブジェクトを比較する通常の方法は、異なるソケットオブジェクトタイプが異なるメタテーブルを持つため機能しません。 メタテーブルに一貫性のある値がないように見えることはありません(たとえば、同じ__tosting
メタメソッド)
したがって、それらの値がルアソケットオブジェクトであるかどうかをどのように知ることができますか?
luasocketは、値がルアソケットオブジェクトであるかどうかを知る方法を提供していないようです。値がluasocketオブジェクトかどうかを知るには?
メタオブジェクトを比較する通常の方法は、異なるソケットオブジェクトタイプが異なるメタテーブルを持つため機能しません。 メタテーブルに一貫性のある値がないように見えることはありません(たとえば、同じ__tosting
メタメソッド)
したがって、それらの値がルアソケットオブジェクトであるかどうかをどのように知ることができますか?
LuaSocketオブジェクトであるかどうかを知りたいので、fdを得ることができるだけで、オブジェクトにgetfd()メソッドがあるかどうかを調べるのはなぜですか?ボーナスとして、これはLuaSocketだけでなく、このメソッドをオブジェクトに提供する現在のライブラリと将来のライブラリでも動作します。
この手法は、'duck typing'として知られています。
あなたはしていません。一般的に、あなたはそのようなことを自分で追跡することが期待されます。渡されたオブジェクトは、期待しているオブジェクトであると信じています。また、わからない場合は、いつでもpcall
を使用して関数の呼び出しを行い、エラーをキャッチすることができます。
luaファイルオブジェクト、luasocketオブジェクト、libevオブジェクト、aprオブジェクトを取ります。それらの違いを伝える必要があります。何かのfdを取得する関数を作成したいと思います。どのルーチンを使用するかを知る。 – daurnimator
@daurnimator: "fd"とは何ですか? –
ファイル記述子http://en.wikipedia.org/wiki/File_descriptor – daurnimator
私はあなたがファイルmetatable ; getfdメソッドをチェックします。その後、エラー... – daurnimator