トップページ
ひらく | たたむ | ページトップ
↓マウスで反転選択した文字を検索
Lua
   
ページ内検索 ページ外検索
検索したい文字を入力して
ENTERを押すと移動します。
\n
[ トップページ ]
[ ____CommandPrompt ] [ ____JScript ] [ ____MySQL ] [ ____Cygwin ] [ ____Java ] [ ____Emacs ] [ ____Make ] [ ____Perl ] [ ____Python ] [ ____OpenGL ] [ ____C# ] [ ____StyleSheet ] [ ____C++ ] [ ____Winsock ] [ ____Thread ] [ ____VisualStudio ] [ ____C ] [ ____Win32API ] [ ____Lua ] [ ____PhotoShop ]
ヘッダ検索
___

■ 変数


  Lua には 3種類の変数がある。
     global
     local
     tablefield
データ( 情報 )はすべて, テーブルという構造に格納される。 グローバル変数はグローバル用のテーブルにセットされる。
  -- local と言わなければ, global
  v = 10;

  -- local 宣言で local変数扱い
  local t = "test";

  -- 値が代入されない変数は nil がセットされる。
  local v;

POINT 変数に型はなく、任意の型のオブジェクトの場所だけを知っている存在。 動的にわりあてることができるが、 変数の型チェックをしてくれないため自前でする必要がある。 ( Perl, Python 同様 ) 静的わりつけ Merit 実行前に チェック 可能 効率のよい cmp 作成可能 DeMerit 頻繁な型変換 param が異なる場合に複数の関数が必要. 動的わりつけ Merit Object の型をしらべて, 処理をするという動的な処理が可能 DeMerit 実効時にエラーが発生 param が異なる場合に複数の関数が必要. ひとつの 変数(Symbol) に 文字列, 数値 を代入できる。 Java, C では変数に型情報があるため, 実行前にチェックができる。 スペルミスが素通りされる危険がある
___

■ ローカル変数

ローカル変数を定義するには local 文を使用する。
    local  i = 10;
    local i, j = 10, 20;
SYNTAX local name [= expression] local namelist [= expressionlist] POINT ブロック内で local 文を使用する度に, 新たに変数が定義される。 ( C 同様 ) C と同じでブロック内のスコープになる。
    i = 20             -- グローバル変数 i
    do 
      local i = 10     -- 変数 i
      do
        local i = 7    -- これは別オブジェクトの 変数 i
        -- 7
        print (i)
      end              -- もっとも内側のブロックで変数は消滅する 
      -- 10
      print (i)
    end
    for i=1, 10 do
      local y;  -- ここで新規定義
      if y == nil then 
        y = 0 
      else 
        y = y + 1 
      end
    done
___

■ グローバル変数

すべてのグローバル変数は、Luaの環境テーブルというテーブル内のフィールドとして存在する。 global変数とテーブルフィールドへアクセスする効果はメタテーブルによって変えられる. 各関数はそれぞれ独自に環境への参照を持つ. 関数が作られたとき、関数は、それが作られた関数から見える環境を受け継ぐ( ENV 同様 x == _env.x == gettable_event(_env, "x") ( MetaMethod を利用する ) Lua で グローバル変数を宣言( 代入 )する際は, TblGbl( _G ) に格納される
  mt = {};
  mt.__newindex = function( t, n, v );
POINT block do ... end に属さない local v は file scope になる 保守性のために, local にすること.
    -- 未定義変数のチェック
    if ( v ~= nil ) 
        
    end


















NINJAIDX 18