Lua言語入門(一)

9342 ワード

冒頭
1、複数の連続文の間には分割記号は必要ありませんが、セミコロンで分割することもできます.例えば、a=1 b=2はa=1に等価である.b= 2
2、lua解釈器は大型ブロック処理に対して何の問題もない.
3、インタラクティブモードでコードを実行するか、プログラムコードを1つのファイルに保存してから実行し、インタラクティブモードを終了する:osを呼び出す.exit()またはend of fileコントローラ(windowsではctrl+z、unixではCtrl+d)を入力します.
4、lua -i hello.lua:-iパラメータは、helloのコードを先に実行し、インタラクティブモードにします.
5、dofile(filename):ライブラリのロード(実行ファイルのコード)
6、luaは大文字と小文字を区別し、名前はjava文法と似ている.
7、luaの注釈、行の注釈:-;複数行コメント:-[[コード-]]
8、luaのグローバル変数:初期化されていない変数にアクセスしてもエラーは発生せず、アクセス結果は特殊な値nilであり、各変数を削除してnilに割り当てる
9、lua解釈器実行プログラム:lua[オプションパラメータ][スクリプト[パラメータ]]
-e:コマンドラインに直接コードを入力できます-l:ライブラリファイルをロード-i:コードを実行し、インタラクティブモードに入ります
タイプと値
10、luaは8の基礎タイプがあります:nil(空):無効を表します.
boolean(ブール):true or false;luaはfalseとnilを偽と見なし、0と空の文字列を真と見なします.
number(数字):実数、luaは整数と浮動小数点数の区別がなく、科学計算法、
string(文字列):lua文字列は可変値であり、文字列の文字を直接変更することはできません.新しい文字列を作成する必要があります.
a = "one string";
 b = string.gsub(a, "one", "anothor"); 

文字列には、単一引用符または二重引用符を使用できます.タイプC言語のエスケープを含む;複数行文字列([""]):
page = [[




]]

文字列接続:たとえば
print(10 .. 20)

変換文字列:tostring(10);文字列長:文字列の前にオペレータ'#'を配置して文字列長を取得します.
print(#str)

userdata(カスタムタイプ):userdataはアプリケーションまたはCによって作成された新しいタイプを表し、標準IOライブラリはuserdataでファイルを表し、任意のCデータをlua変数に格納することができます.
function(関数):変数に格納でき、パラメータによって他の関数に渡すことができ、他の関数の戻り値とすることができる.luaのすべての標準ライブラリはCで書かれており、luaとCは互いに調整することができます.
thread(スレッド):後で、
table(表):-[[は1つの関連配列で、“関連配列”は1種の特殊なインデックス方式を持つ配列である;大きさは可変である;luaはtableを通じてモジュール、パケット、オブジェクトを表す.io.readはioモジュールの中のread関数を表し、luaに対してこれは文字列“read”をkeyとしてtable ioをインデックスすることを表す;tableはオブジェクトで、1つの“匿名のオブジェクト”と見なすことができる、luaはひそかにtableのコピーを生成したり、新しいtableを作成したりせず、1つの参照しか持っていません.空のtable:a = {};を作成する最も簡単な式は「{}」です.table変数とtable自体の間には固定的な関連性がなく、属性は自由に追加して取り出すことができる.追加または変更:a["x"] = 10;削除:a["x"] = nil;
--[[
a = {}
x = "y"
a[x] = 10
]]
a["y"]a.yに等価である.a.yはkeyがyでtableをインデックスすることを表す.
配列と線形テーブルを表す:整数をkeyとしてtableを使用する;自動生成されたインデックスは1から始まります.配列または線形テーブルの長さ取得:「#」オペレータは、文字列の使い方と一致し、Luaはnilを配列の終わりを定義するフラグとし、配列にnilが中間に含まれている場合、オペレータはこれらのnil要素が終わりフラグであると考えます.tableの最大正索引数を返す:table.maxn;]]
11、print(type(a)):変数タイプを印刷します.
式#シキ#
12、算術オペレータ:他の言語とほぼ一致します.
13、リレーショナルオペレータ:他の言語との唯一の違いは「!=」が「~=」になったことです.table、userdata、および関数は、同じオブジェクトを参照している場合にのみ等しいとみなされます.文字列と数字を除く他のタイプは、等しいか等しくないかの比較しかできません.異なるタイプ間のサイズの比較は直接エラーを引き起こす.
14、論理オペレータ(and,or,not):条件制御文と一致し、すべての論理オペレータはfalseとnilを偽と見なし、他のものは真と見なす.オペレータルールは他の言語と一致します.
15.オペレータ優先度:“^”と“.”右結合で、その他は左結合です.
16、tableの構造:空の構造:a = {}構築配列:a = {"1", "2", "3", "4", "5"}a = {x = 10, y = 20}a = {}; a.x = 10; a.y = 20に等しい
属性の追加:a.x = 1、table aにkeyが「x」の属性がある場合、文は変更され、なければtableに「x」が追加されます.(ちょっとJavaScriptみたいに勝手に)
属性の削除:a.x = nil初期化のネスト:
a = {name = "android", {x = 1, y = 2}, {x = 3, y = 4}}

アクセス:
a.name   ---> android
a["name"]    ---> android
a[1]     ---> 1

tableは最後の要素の後ろにカンマを書くことができます.「;」を使うことができます.「,」区切り要素
{x = 1,  y = 2, "x"; "y", }

ステートメント
17、多重賦課:
a, b, c = 1, 2
x, y = y, x

値の個数が変数の個数より少ない場合、余分な変数はnilとして与えられます.値の個数が多ければ、余分な値は直接捨てられます.
18、局部変数:local修飾変数、例:local a = 1;19.表示される定義ブロック:キーワード使用:do-end
do
   local a = 1
   local d = a*2
   c = a+b
end

20、制御文、luaはswitch文if-elseif-else-endをサポートしない
if a>0 then
 a=1
end
if a>0 then
 a = 1
else
 a = -1
end
if a>0 then
 a = 1
elseif a == 0 then
 a = -1
else
 a = 0
end

while
local i = 1
while a[i] do
 print(a[i])
 i = i+1
end

repeat - until
repeat
 line = io.read()
until line ~= ""
local sqr = x/2
repeat
 sqr = (sqr + x/sqr)/2
 local  error = math.abs(sqr^2 - x)
until error < x/10000 --                

21、for
for i=exp1,exp2,exp3 do
 print(i)
end

iがexp 1からexp 2に変化することを示し、毎回exp 3をステップとして増加し、exp 3はデフォルトで1になり、「実行体」を実行することができる.exp 1,exp 2,exp 3はいずれもループ開始前に一度に値を求め、一度だけ実行する.制御変数iは、for文とは自動的に何かの局所変数であり、ループ内でのみ表示される.
22、汎用for
for i,v in ipairs(table_name) do
 print(i,v)
end

反復器ipairsは、配列を巡る反復器関数であり、ループごとにiにインデックス値が与えられ、vに対応する要素値が与えられる.
23、breakとreturn break:現在のループを終了return:現在のブロックを終了し、end、else、untilの1つ前に置くしかなく、他の場所は機能しないか、エラーを報告しないかのいずれかです.
function fun()
   return --      

   do
   return --               ,       
   end

   print("hello lua")
end