
 
| 
 
 \n | 
[ トップページ ]
 
[ ____CommandPrompt ]
[ ____JScript ]
[ ____MySQL ]
[ ____Cygwin ]
[ ____Java ]
[ ____Emacs ]
[ ____Make ]
[ ____Perl ]
[ ____Python ]
[ ____OpenGL ]
[ ____C# ]
[ ____StyleSheet ]
[ ____C++ ]
[ ____Winsock ]
[ ____Thread ]
[ ____VisualStudio ]
[ ____C ]
[ ____Win32API ]
[ ____Lua ]
[ ____PhotoShop ]
 
ヘッダ検索
 
■ metatable(MetaMethod)
  POINT
    MetaMethod を利用して, Lua を拡張(カスタマイズ)できる。
■ 自分で作成した型を調べる
  type( data ) == "table"
   if ( getmetatable( g ) == rgbmeta ) then
      print("custom data");
   end
■ 配列の上限値を設定する
   ( MetaMethod を利用することで テーブル要素の参照をカスタマイズする
  __index, __newindex を上書きする.
  __index    : val = tbl["name"];    // 参照.
  __newindex : tbl["name"] = "foo";  // 代入
  MetaMethod の定義中に, MetaMethod を呼ぶのを防ぐのは, rawget, rawset()
  -- rawget( tbl, idx );
      val = tbl[idx]
  -- rawset( tbl, idx, val );
      tbl[idx] = val
    --
    -- MetaTbl
    --    この tbl EventKey に対して OverWrite 関数をセットする.
    tblTest = { limit = 3 };
    --
    -- tbl を参照する [] 演算子を overwrite する
    --
    tblTest.__index = function( t, idx )
       if ( idx > tblTest.limit ) then
          error("invalid dana idx");
       end
       return rawget( t, idx );
    end
    -- メタテーブルをセットする。
    tt = {}
    setmetatable( tt, tblTest );
    -- テスト
    print( tt[10] );
 
 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 | 
  
NINJAIDX 18