スクリプト言語Luaリトライ(インストールおよび簡単な構文)


勉強の合間に大神陳皓のクールシェルネットを見て、何気なくこの「Lua簡明教程」を見て、そこでこの軽量級のスクリプトを試してみたいと思って、性能が最も高いスクリプト言語とも呼ばれています.
一、Lua言語の紹介
Lua(英語発音:/ˈluːə/)プログラム言語は簡潔で軽量で拡張可能なスクリプト言語で、ポルトガル語で「Luna」(月)の意味.ブラジルのリオデジャネイロカトリック大学(Pontifical Catholic University of Rio de Janeiro)の研究グループで、Roberto Ierusalimschy、Waldemar Celes、Luiz Henrique de Figueirdoからなり1993年に開発された(20年以上も経っていますね).アプリケーションに埋め込み、柔軟な拡張機能とカスタマイズ機能を提供することを目的として設計されています.Luaは標準Cで作成されており、ほとんどのオペレーティングシステムやプラットフォームでコンパイル、実行できます.
Luaは強力なライブラリを提供していないが、これはその位置づけによって決定される.したがってLuaは独立したアプリケーションを開発する言語としては適していない.Luaには、特定のプラットフォーム上でのインスタントコンパイル機能を提供するJITプロジェクトが同時に行われている.[1]
二、Lua取付
ネットで検索すると、sudo apt-get、install lua 5.2でいいようです.
私はLua公式サイトでインストールパッケージをダウンロードしてインストールしました(私がダウンロードしたlua-5.2.3.tar.gz):
1.tar-xvf lua-5.2.3.tar.gz後cd lua-5.2.3ディレクトリへlong@zhouyl:~/Public/lua-5.2.3$ ls        doc  Makefile  README  srcは明らかで、LinuxerはREADMEを見た場合、疑いの余地なく見なければならない.long@zhouyl:~/Public/lua-5.2.3$cat README This Lua 5.2.3,released on 11 Nov 2013.For installation instructions,license details,and further information about Lua,see doc/readme.html.このREADMEは簡単で、私たちが予想したようにインストール方法を書いていませんあるいはどのように使うかなど、Luaのもっと多くの情報を学びたいと書いてあり、doc/readme.htmlファイルを見て、だから...... chromium-browser doc/readme.htmlを開けてみましょう.案の定、開いているページにはAbout/Installing/Changesがあるので、少し読むとインストール方法がわかります.
2.make linux(ここではmakeの後にプラットフォームがついています.もちろんlinuxについていきますよ)残念なことに...報告が間違っていました.「error:readline/readline.h:no such file or directory」の前のブログで、apt-fileを使ってこのような欠落したファイルを検索する方法を書いたことがあります.興味があれば「cyclictestテストと原理の浅談」を見てみましょう.詳細なapt-fileが使用されている.apt-file search readline|grep readline.hは、結果の中で「libreadline 6-dev:/usr/include/readline/readline/readline.h」を簡単に見つけることができるので、apt-getインストール(sudo apt-get install libreadline 6-dev)!
インストールが完了したら、make linuxを使うのはとても順調です!
3.sudo make installこの時点で、Luaはすでにインストール済みで、この不思議なスクリプト言語Luaを使用することができます.long@zhouyl:~/Public/lua-5.2.3$ lua Lua 5.2.3  Copyright (C) 1994-2013 Lua.org, PUC-Rio > print("Hello World") Hello World >
スクリプト言語として、スクリプトファイルに書き込んで実行することもできます.
long@zhouyl:/tmp/test$ cat hello.lua #!/usr/local/bin/lua print("Hello World") long@zhouyl:/tmp/test$ lua hello.lua  Hello World long@zhouyl:/tmp/test$ chmod +x hello.lua  long@zhouyl:/tmp/test$ ./hello.lua  Hello World long@zhouyl:/tmp/test$ 
三、Lua言語の基礎
3.1コメント
--2つの横線から1行コメントを開始
--[[       2つの[和]をつけて表す.
    複数行のコメント.
--]]
3.2 変数のタイプ
Luaは動的タイプ言語であるため、言語にはタイプの定義がなく、変数タイプを宣言する必要がなく、各変数は自分でタイプを保存している.Luaには8つの基本タイプがある.
数値(number)       内部はdoubleで表され、Luaの数字はdouble型のみで、64 bitsで、Luaが浮動小数点数を処理するのが遅い(1000000000000を超えない限り)、精度の問題がある文字列(string)を心配する必要はありません.      常にゼロで終わるが、任意の文字(ゼロを含む)を含むことができるため、C文字列に等価ではなく、そのスーパーセットである.文字列は、単一引用符または二重引用符または上の注釈で使用される[[]](Pythonの三引用符のように、複数行の文字列を定義するのに使用できる)を使用することができ、Cタイプのエスケープもサポートされる.例えば、 ‘\a'(鳴動ベル)、'b'(退格)、'f'(フォーム)、'(改行)>、'r'(帰車)、't'(横製表)、'v'(縦製表)、''(反スラッシュ)、''(二重引用符)、および''(単引用符)ブール(boolean)      「true」または「false」の2つの値しかありません.数値0、「空文字列('0')はtrue!関数(function)です.      Luaの重要な概念の一つ.Cに等しい関数や関数ポインタではない.表(table)               異性のHash表.Luaの重要な概念の一つ.userdata               ユーザー(スクリプト以外のユーザー)定義のCデータ構造.スクリプトユーザーはそれしか使用できず、定義できません.スレッド(thread)         Luaコラボレーションスレッド(coroutine)は、一般的なオペレーティングシステムのプリエンプトスレッドとは異なります.nil                           何もありません.CのNULLとクラス比できますが、空のポインタではありません.宣言されていない変数、nilにアクセスします.たとえば foo = anUnknownVariable  現在foo=nilです.falseとnilだけがfalseで、他はtrueで、0と空の文字列を含めてtrueです.
> print(type(nil))
nil
> print(type(99.9+12))
number
> print(type(true))
boolean
> print(type("Hello World"))
string
> print(type(print))
function
> print(type{test = "test"})
table
注意すべきは、luaの
変数は、特に説明されていないグローバル変数であれば、文ブロックや関数内である可能性があります.
変数にlocalキーを付けるのはローカル変数です.
theGlobalVar = 50
local theLocalVar = "local variable"
3.3フロー制御
Luaではdoやendなどのキーワードを使用してブロックを表示します.  whileサイクル:
while num < 50 do 
  num = num + 1  --    ++ or +=    。 
end 

If文: 
if num > 40 then
        print('over 40')
elseif    s ~= 'walternate' then  -- ~=      。 Python  ,==     ,      。 
        io.write('not over 40
') -- stdout。 else -- 。 thisIsGlobal = 5 -- 。 -- : local line = io.read() -- stdin 。 -- .. : print('Winter is coming, ' .. line) end

andおよびor:
Luaの「or」も「and」も短絡可能でありpythonと同様にa and b or cを用いて得ることもできる
C/jsのa?b:cオペレータに似ています. 
ans = aBoolValue and 'yes' or 'no'   forループ:
karlSum = 0 
for i = 1, 100 do  --        
      karlSum = karlSum + i 
end 

--    "100, 1, -1"        : 
fredSum = 0 
for j = 100, 1, -1 do fredSum = fredSum + j end 

範囲式:
begin,end[,step].pythonのrange()に似ています.
untilサイクル: 
repeat 
        print('the way of the future') 
        num = num - 1 
until num == 0 

3.4関数
Luaの関数定義はshellと同様で、functionキーワードを使用し、end終了:再帰
function fib(n)
  if n < 2 then return 1 end
  return fib(n - 2) + fib(n - 1)
end

閉パッケージの例1
function newCounter()
    local i = 0
    return function()     -- anonymous function
        i = i + 1
        return i
    end
end
 
c1 = newCounter()
print(c1())  --> 1
print(c1())  --> 2

例2
function myPower(x)
    return function(y) return y^x end
end
 
power2 = myPower(2)
power3 = myPower(3)
 
print(power2(4)) --4 2  
print(power3(5)) --5 3  

Lua言語は多値同時付与をサポートする:
name,Age = "Zhou",12
ということで、Luaの関数の戻り値も多く戻ります(pythonに似ています):
#!/usr/local/bin/lua
function getUserInfo(id)
    print(id)
    return "Zhou", 24
end

name, age = getUserInfo()   --              
print(name)
print(age)
print(getUserInfo(123))     --             
print(getUserInfo(123)[1])  --         python     
           
プログラムは簡単ですが、実行結果はどうですか.
long@zhouyl:/tmp$ lua aa.lua 
nil           --      ,  id    
Zhou  
24
123         --   id
Zhou	24       --       
123         
nil            --             ,                 

3.5 Table
Tableとは、pythonや他の言語のDict(辞書)のようなKey Valueのデータ構造であり、TableはLuaの唯一のデータ構造である.
long@zhouyl:~$ lua
Lua 5.2.3  Copyright (C) 1994-2013 Lua.org, PUC-Rio
> zhou = {name="Zhou Yunlong",age=24,home="AH"}
> print(zhou.name)  --   key  value
Zhou Yunlong
> zhou.hope="gf"    --       
> print(zhou.hope)
gf
> for key,value in pairs(zhou) do   --   Table
  print(key,value)
end
hope    gf
age 24
name    Zhou Yunlong
home    AH
> 

四、最後の言葉
本文はただ陳皓大神の博文を見た後で、Luaのシナリオ言語のいくつかの簡単なテストに対して、感じはまだとても面白くて、この不思議で、簡単で、効率的な言語も20数年歩いたことがあります.
しかし、Luaはpythonとは異なり、pythonは膨大で豊富なライブラリを持っているが、Luaのライブラリは多くないため、Luaは一般的に埋め込みスクリプト言語として使用され、Luaのプロジェクトを使用したことがある(多くのゲームで使用されている)偉大な魔獣世界を含むプラグインでもLuaが使用されていることに注目されます.しかし、本稿では簡単な言語ルールの説明しかしていません.後で時間があれば、この不思議な言語を見てみましょう.ネットでLuaを学ぶ良いリソースを貼って、興味があれば、遊びましょうか?!
================
参照:
[1] http://baike.baidu.com/link?url=zG3bYWFojdkaOefWrkPZFH9TkBIOmQqSDtuD9YgzwBx_h6eeGKsJx3brHfPrwvpL
[2] http://coolshell.cn/articles/10739.html 
[3] http://tylerneylon.com/a/learn-lua/
詳細:
manual.luaer.cn luaオンラインマニュアルbook.luaer.cn luaオンラインlua学習チュートリアルlua参考マニュアルLua参考マニュアルの中国語翻訳(雲風翻訳バージョン)LUAプログラミング(programming in lua中国語版)http://www.codingnow.com/2000/download/lua_manual.html    Lua 5.1中国語マニュアル.http://lua-users.org/   luaに関する多くの情報が得られます.http://www.lua.org/lua-l-stats.html   ここはwebでluaのmaillistにアクセスできますが、Luaを上手に使いたいなら、購読したほうがいいです. 
http://luaforge.net/projects/      大量のLua関連プロジェクトが参考になる.すべてのプロジェクトが直接使う価値があるわけではないが、Lua 5.1は公式のmodule拡張案を発表しているが、多くのsource codeは参考に値する. 
http://benchmarksgame.alioth.debian.org/u32/benchmark.php?test=all&lang=lua&lang2=lua  ここから多くの高性能luaコードを得ることができ、高品質のluaプログラムを書く方法を知ることができます.http://luajit.org/    Lua JITは絶対に注目すべきものです. 
http://www.keplerproject.org/     luaで実現されたwebソリューションは、luaベースの巨大なエンジニアリングです.http://www.codingnow.com/2000/download/The%20Implementation%20of%20Lua5.0.pdf    The Implementation of Lua 5.0中訳(海へ飛ぶ)Luaのライブラリについては、公式ドキュメント:stringを参照してください.  table, math, io, os.