linux-luaスクリプトの開始

5576 ワード

1,lua概要
Luaはコンパクトなスクリプト言語です.Luaは標準Cで作成されており、ほとんどのオペレーティングシステムやプラットフォームでコンパイル、実行できます.Luaは強力なライブラリを提供していません.これはその位置によって決まります.だからLuaは独立したアプリケーションを開発する言語としては向いていない.Luaスクリプトは、C/C++コードによって容易に呼び出されてもよいし、C/C++の関数を逆に呼び出すこともでき、アプリケーションにおいてLuaを広く応用することができる.拡張スクリプトとしてだけでなく、XML、Iniなどのファイル形式の代わりに、通常のプロファイルとしても使用でき、理解とメンテナンスが容易になります.完全なLua解釈器は200 kにすぎず、現在のすべてのスクリプトエンジンの中でLuaの速度が最も速い.これらはすべてLuaが埋め込みスクリプトとして最適な選択であることを決定します.多くのアプリケーションでは、LUAを独自の組み込みスクリプト言語として使用し、構成性、拡張性を実現しています.その中には魔獣世界、博徳の門、怒りの小鳥などが含まれている.
http://www.cnblogs.com/ly4cn/archive/2006/08/04/467550.html
2,lua名言
Luaでは、キーワードを除いてすべて変数です.
3,lua文法
3.1コメント
3.1.1一方通行注釈
一方通行注釈では、2つのマイナス記号「--」が連続して行の最後まで注釈の開始を表します.C++言語の「//」に相当します.
3.1.2複数行コメント
複数行アノテーションでは、「--[[」でアノテーションが始まり、「]」まで続くことを示します.このコメントはC言語の「/*......*/」に相当します.注記では、[[]と[]]はネストできます.
3.2文構造
3.2.1文の区切り
Luaでは、文の間にセミコロン";"仕切りは、空白で仕切ることもできます.一般的に、複数の文が同じ行に書かれている場合は、常にセミコロンで区切ることをお勧めします.
3.2.2文ブロック
do print("Hello") end
Luaでは、文ブロックはdoとendで囲まれている.Cでは「{」と「}」で囲まれている.
3.3制御文
3.3.1 if文
-- if    then ... elseif    then ... else ... end
if 1+1=2 then print("true")
elseif 1+2~=3 then print("true")
else print("false") end

3.3.2 while文
-- while    do ... end
while 1+1~=2 do print("true") end

3.3.3 repeat文
-- repeat ... until   
repeat print("Hello") until 1+1~=2

3.3.4 for文
注意してください.forのサイクル変数は常にforの局所変数にのみ作用します.ステップ値を省略すると、forループは1をステップ値として使用します.
breakを使用すると、ループを中止できます.
-- for   =  ,    ,    do ... end
for i = 1, 10, 2 do print(i) end

-- for   1,   2, ...   n in        do ... end
for a,b in mylist do print(a, b) end

3.4賦課文
付与文はLuaで強化された.複数の変数に同時に値を割り当てることができます.
a,b,c,d=1,2,3,4  --    
a,b=b,a  --                 

デフォルトでは、変数は常にグローバルとみなされます.ローカル変数を定義する必要がある場合は、最初に値を割り当てるときにlocalで説明する必要があります.
local a,b,c = 1,2,3  -- a,b,c      

3.5演算記号
3.5.1数値演算記号
アイコン
意味
+
加算
-
減算
*
乗算#ジョウサン#
/
除算
^
乗方
..
「This a」."string."-- 「this a string」に等しい
3.5.2比較演算記号
アイコン
意味
<
より小さい
>
より大きい
<=
以下
>=
以上
==
に等しい
~=
等しくない
3.5.3論理演算符号
Luaではfalseとnilだけがfalseとして計算され、他のデータはtrueとして計算され、0もtrueです!
アイコン
意味
and
a and b:aがfalseの場合、aを返します.そうでなければbに戻る
or
a or b:aがtrueの場合、aを返します.そうでなければbに戻る
not

Luaではこれが有用な特性であり,比較的混沌とした特性でもある.
C言語の文をシミュレートできます:x=a?b:c,Luaでは,x=a and b or cと書くことができる.
最も有用な文は、if not x then x=v endに相当するx=x or vです.
3.6変数
3.6.1キーワード
キーワードは変数にできません.
and
     break
do
else
elseif
end
     false
for
function
if
in
     local
nil
not
        or
repeat return
then true
until
while
3.6.2変数タイプ
変数タイプはtype()関数でチェックできます.Luaがサポートするタイプは以下のとおりです.
を選択します.
説明
Nil
空の値、使用されていないすべての変数はnilです.nilは値であり、タイプでもある.
Boolean
ブール値、有効な値は2つしかありません:trueとfalse
Number
数値、Luaでは、数値はC言語のdoubleに相当します
String
文字列、もしあなたが望むならば、文字列は“0”の文字を含むことができます(これはC言語がいつも“0”で終わるのとは違います)
Table
リレーショナル・テーブル・タイプです.このタイプは機能が強いので、後述の内容を参照してください.
Function
関数のタイプは、疑わないでください.関数もタイプです.つまり、すべての関数は、それ自体が変数です.
Userdata
このタイプはLuaの宿主と付き合うために使われています.ホストは通常CとC++で記述され、この場合、Userdataはホストの任意のデータ型であり、通常はStructとポインタがある.
Thread
スレッドタイプで、Luaには本物のスレッドはありません.Luaでは1つの関数をいくつかの部分に分けて実行できます.
文字列Stringについて:
例:次の文は、完全に同じ文字列を示しています.
a = 'alo
123"' a = "alo
123\"" a = '\97lo\10\04923"' a = [[alo 123"]] a = [==[ alo 123"]==]
文字列は、二重引用符または単一引用符で文字列を囲みます.
エスケープ文字について.Luaでは、複数行の文字列を[[]と[]]で囲みます.(lua 5.1:中括弧の真ん中に「=」=[...]=]などのいくつかの"="を加えることができます.詳細は以下の例を参照).なお、このような文字列では、単独で使用される[[]または[]]が含まれている場合でも、曖昧さを回避するために「[」または「」を使用しなければならない.もちろん、このような状況はめったに起こりません.
リレーショナル・テーブル・タイプTableについて:
リレーショナル・テーブル・タイプです.これは強力なタイプです.このタイプを配列と見なすことができます.C言語の配列だけで、正の整数でインデックスを作るしかありません.Luaでは、nilを除いて任意のタイプで配列のインデックスを作成できます.同様に、C言語では、配列の内容は1つのタイプしか許可されていません.Luaでは、nilを除いて任意のタイプの値で配列の内容を作ることもできます.
Tableの定義は簡単で、その主な特徴は「{」と「}」で一連のデータ要素を囲むことである.
T1 = {}  --       
T1[1]=10  --         C         。

T1["John"]={Age=27, Gender="Male"}
      :
T1["John"]={}  --          ,          nil   
T1["John"]["Age"]=27
T1["John"]["Gender"]="Male"
            ,       :
T1.John={}
T1.John.Age=27
T1.John.Gender="Male"
 
T1.John{Age=27, Gender="Male"}

Functionについて:
function add(a,b)  -- add      ,a b     
       return a+b  -- return            
end
return言語はendの前に必ず書かなければならないことに注意してください.もし私たちが真ん中にreturnを置かなければならないなら、do return endと書くべきだ.
関数も変数タイプですか?上の関数定義は、次のようなものです.
add = function (a,b) return a+b end
addに値を再割り当てすると、この関数は表示されなくなります.nilを含むadd任意のデータを割り当てることもできます(これにより、nilに値を割り当てると、変数が消去されます).FunctionはC言語の関数ポインタに似ているのではないでしょうか.
複数の値を返します.
function s()
	return 1,2,3,4
end
a,b,c,d = s()  --   ,a = 1, b = 2, c = 3, d = 4