歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 腳本語言Lua小試(安裝及簡單語法)

腳本語言Lua小試(安裝及簡單語法)

日期:2017/3/1 9:47:24   编辑:Linux編程

不經意看到這篇《Lua簡明教程》,於是想嘗試一下這個很輕量級的腳本,也號稱性能最高的腳本語言。

一、Lua 語言簡介

Lua(英語發音:/ˈluːə/)程序設計語言是一個簡潔、輕量、可擴展的腳本語言,是葡萄牙語中“Luna”(月亮)的意思。是巴西裡約熱內盧天主教大學(Pontifical Catholic University of Rio de Janeiro)裡的一個研究小組,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所組成並於1993年開發(已經有20多個年頭咯)。 其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定制功能。Lua由標准C編寫而成,幾乎在所有操作系統和平台上都可以編譯,運行。

Lua並沒有提供強大的庫,這是由它的定位決定的。所以Lua不適合作為開發獨立應用程序的語言。Lua 有一個同時進行的JIT項目,提供在特定平台上的即時編譯功能。

二、Lua 安裝

網上搜了一下,好像sudo apt-get、install lua5.2就可以。

我是在Lua官網下載安裝包安裝的(我下載的lua-5.2.3.tar.gz):

1. tar -xvf lua-5.2.3.tar.gz 後 cd lua-5.2.3 進入目錄

www.linuxidc.com @linuxidc:~/Public/lua-5.2.3$ ls

doc Makefile README src

很明顯,Linuxer在看到README的情況下毋庸置疑的要看一下:

www.linuxidc.com @linuxidc:~/Public/lua-5.2.3$ cat README

This is 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

可以很輕松地在結果中找到這條:

“ libreadline6-dev: /usr/include/readline/readline.h ”,所以apt-get安裝之(sudo apt-get install libreadline6-dev)!

安裝完成後,再使用 make linux 非常順利!

3. sudo make install

此時,Lua已經安裝完畢,我們可以使用這個神奇的腳本語言Lua了:

www.linuxidc.com @linuxidc:~/Public/lua-5.2.3$ lua

Lua 5.2.3 Copyright (C) 1994-2013 Lua.org, PUC-Rio

> print("Hello World")

Hello World

>

作為一個腳本語言,它當然也可以寫到腳本文件中運行:

www.linuxidc.com @linuxidc:/tmp/test$ cat hello.lua

#!/usr/local/bin/lua

print("Hello World")

www.linuxidc.com @linuxidc:/tmp/test$ lua hello.lua

Hello World

www.linuxidc.com @linuxidc:/tmp/test$ chmod +x hello.lua

www.linuxidc.com @linuxidc:/tmp/test$ ./hello.lua

Hello World

www.linuxidc.com @linuxidc:/tmp/test$

三、Lua 語言基礎

3.1 注釋

-- 兩個橫線開始單行注釋

--[[

加上兩個[和]表示

多行注釋。

--]]

3.2 變量類型

Lua是一種動態類型語言,因此語言中沒有類型的定義,不需要聲明變量類型,每個變量自己保存了類型。Lua有八種基本類型:

數值(number) 內部以double表示,Lua的數字只有double型,64bits,你不必擔心Lua處理浮點數會慢(除非大於100,000,000,000,000),或是會有精度問題

字符串(string) 總是以零結尾,但可以包含任意字符(包括零),因此並不等價於C字符串,而是其超集。字符串你可以用單引號,也可以用雙引號或者上面注釋時用到的[[ ]](類似於Python中的三引號,可以用於定義多行的字符串),還支持C類型的轉義,比如: ‘\a’ (響鈴), ‘\b’ (退格), ‘\f’ (表單), ‘\n’ (換行)>, ‘\r’ (回車), ‘\t’ (橫向制表), ‘\v’ (縱向制表), ‘\\’ (反斜槓), ‘\”‘ (雙引號), 以及 ‘\” (單引號)

布爾(boolean) 只有“true”或者“false”兩個值。數字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"

Lua 的詳細介紹:請點這裡
Lua 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved