Lua的API函數


1. 基礎庫

我們在整個教程中使用了各種主題下的基本庫。 下表提供了相關頁面的鏈接,並列出了本Lua教程各部分所涵蓋的功能。

編號

庫/方法

作用

1

錯誤處理

包括錯誤處理函數,如斷言, 錯誤,如Lua錯誤處理中所述。

2

內存管理

包括與垃圾收集相關的自動內存管理功能, 如Lua垃圾收集中所述。

3

dofile ([filename])

它打開文件並以塊的形式執行文件的內容。

4

_G

因此是保存全局環境的全局變量(即_G._G = _G)。

5

getfenv ([f])

返回函數使用的當前環境。

6

getmetatable (object)

如果object沒有metatable, 則返回nil。 否則,如果objectmetatable具有__metatable字段,

7

ipairs (t)

此函數獲取表的索引和值。

8

load (func [, chunkname])

使用函數func加載一個塊來獲取它的碎片。

9

loadfile ([filename]))

load類似,但是如果沒有給出文件名,則從文件filename或標准輸入中獲取塊。

10

loadstring (string [, chunkname])

load函數類似,但從給定的字符串中獲取塊。

11

next (table [, index])

允許程序遍歷表的所有字段。

12

pairs (t)

暫停正在運行的協同程序。

13

print (...)

打印給定的參數值。

14

rawequal (v1, v2)

檢查v1是否等於v2,而不調用任何無方法。 返回一個布爾值。

15

rawget (table, index)

獲取table [index]的值, 而不調用任何方法。table必須是表; index可以是任何值。

16

rawset (table, index, value)

table [index]的值設置為value,而不調用任何方法。

17

select (index, ...)

如果index是數字,則返回參數編號索引后的所有參數。

18

setfenv (f, table)

設置給定函數使用的環境。

19

setmetatable (table, metatable)

設置給定表的元表。

20

tonumber (e [, base])

嘗試將參數轉換為數字。

21

tostring (e)

接收任何類型的參數並將其轉換為合理格式的字符串。

22

type (v)

返回唯一參數的類型,編碼為字符串。

23

unpack (list [, i [, j]])

返回給定表中的元素。

24

_VERSION

包含當前解釋器版本的字符串的全局變量(不是函數)。

25

協同程序

包括Lua協同程序中解釋的協程操作功能。

 

 

2. Lua數學庫

編號

庫或方法

描述

1

math.abs(x)

返回x的絕對值。

2

math.acos(x)

返回x的弧余弦值(以弧度表示)。

3

math.asin(x)

返回x的弧正弦(以弧度表示)。

4

math.atan(x)

返回x的反正切(以弧度表示)。

5

math.atan2(y,x)

返回y / x的反正切(以弧度表示),但使用兩個參數的符號來查找結果的象限(它也正確處理x為零的情況。)

6

math.ceil(x)

返回大於或等於x的最小整數。

7

math.cos(x)

返回x的余弦值(假設為弧度)。

8

math.cosh(x)

返回x的雙曲余弦值。

9

math.deg(x)

以度為單位返回角度x(以弧度表示)。

10

math.exp(x)

返回值ex次冪。

11

math.floor(x)

返回小於或等於x的最大整數。

12

math.fmod(x,y)

返回x除以y的余數,將商舍入為零。

13

math.frexp(x)

返回me,使得x = m2ee是整數,m的絕對值在[0.5,1]范圍內(或者當x為零時為零)。

14

math.huge

HUGE_VAL值是一個大於或等於任何其他數值的值。

15

math.ldexp(m, e)

返回m2e(e是一個整數)。

16

math.log(x)

返回x的自然對數。

17

math.log10(x)

返回x的以10為底的對數。

18

math.max(x,...)

返回參數中的最大值。

19

math.min(x,...)

返回參數中的最小值。

20

math.modf(x)

返回兩個數字,x的整數部分和x的小數部分。

21

math.pi

pi的值。

22

math.pow(x,y)

返回xy方。(也可以使用表達式x ^ y來計算此值。)

23

math.rad(x)

以弧度為單位返回角度x(以度為單位)。

24

math.random([m [, n]])

此函數是ANSI C提供的簡單偽隨機生成器函數rand的接口。

25

math.randomseed(x)

x設置為偽隨機生成器的“種子”:相等的種子產生相等的數字序列。

26

math.sin(x)

返回x的正弦值(假設為弧度)。

27

math.sinh(x)

返回x的雙曲正弦值。

28

math.sqrt(x)

返回x的平方根。(也可以使用表達式x ^ 0.5來計算此值。)

29

math.tan(x)

返回x的正切(假設為弧度)。

30

math.tanh(x)

返回x的雙曲正切值。

三角函數

使用三角函數的簡單示例如下所示-

radianVal = math.rad(math.pi / 2)
 
io.write(radianVal,"\n")
-- Sin value of 90(math.pi / 2) degrees
io.write(string.format("%.1f ", math.sin(radianVal)),"\n")
-- Cos value of 90(math.pi / 2) degrees
io.write(string.format("%.1f ", math.cos(radianVal)),"\n")
-- Tan value of 90(math.pi / 2) degrees
io.write(string.format("%.1f ", math.tan(radianVal)),"\n")
-- Cosh value of 90(math.pi / 2) degrees
io.write(string.format("%.1f ", math.cosh(radianVal)),"\n")
-- Pi Value in degrees
io.write(math.deg(math.pi),"\n")

 

當運行上面的程序時,將得到以下輸出 -

0.0274155677808040.0 1.0 0.0 1.0 180

 

其他常見的數學函數

使用常見數學函數的簡單示例如下所示-

-- Floor
io.write("Floor of 10.5055 is ", math.floor(10.5055),"\n")
-- Ceil
io.write("Ceil of 10.5055 is ", math.ceil(10.5055),"\n")
-- Square root
io.write("Square root of 16 is ",math.sqrt(16),"\n")
-- Power
io.write("10 power 2 is ",math.pow(10,2),"\n")
io.write("100 power 0.5 is ",math.pow(100,0.5),"\n")
-- Absolute
io.write("Absolute value of -10 is ",math.abs(-10),"\n")
--Random
math.randomseed(os.time())
io.write("Random number between 1 and 100 is ",math.random(),"\n")
--Random between 1 to 100
io.write("Random number between 1 and 100 is ",math.random(1,100),"\n")
--Max
io.write("Maximum in the input array is ",math.max(1,100,101,99,999),"\n")
--Min
io.write("Minimum in the input array is ",math.min(1,100,101,99,999),"\n")

 

當運行上面的程序時,將得到以下輸出 -

Floor of 10.5055 is 10
Ceil of 10.5055 is 11
Square root of 16 is 4
10 power 2 is 100
100 power 0.5 is 10
Absolute value of -10 is 10
Random number between 1 and 100 is 0.22876674703207
Random number between 1 and 100 is 7
Maximum in the input array is 999
Minimum in the input array is 1

 

3. Lua操作系統工具

編號

庫或方法

描述

1

os.clock()

返回程序使用的CPU時間(以秒為單位)的近似值。

2

os.date([format[, time]])

返回包含日期和時間的字符串或表,根據給定的字符串格式進行格式化。

3

os.difftime(t2,t1)

返回從時間t1到時間t2的秒數。在POSIX,Windows和其他一些系統中,恰好是t2-t1的值。

4

os.execute([command])

此功能相當於ANSI C功能系統。 它傳遞要由操作系統shell執行的命令。 如果命令成功終止,則第一個結果為true,否則為nil

5

os.exit([code[, close])

調用ANSI C函數出口以終止宿主程序。 如果codetrue,則返回狀態為EXIT_SUCCESS; 如果codefalse,則返回狀態為EXIT_FAILURE; 如果code是數字,則返回的狀態是此數字。

6

os.getenv(varname)

返回進程環境變量varname的值,如果未定義變量,則返回nil

7

os.remove(filename)

使用給定名稱刪除文件(或POSIX系統上的空目錄)。 如果此函數失敗,則返回nil,以及描述錯誤和錯誤代碼的字符串。

8

os.rename(oldname, newname)

將名為oldname的文件或目錄重命名為newname。 如果此函數失敗,則返回nil,以及描述錯誤和錯誤代碼的字符串。

9

os.setlocale(locale [,category])

設置程序的當前區域設置。 locale是一個依賴於系統的字符串,用於指定語言環境; category是一個可選字符串,用於描述要更改的類別:allcollatectypecurrencynumerictime; 默認類別(category)是"all"。該函數返回新語言環境的名稱,如果無法滿足請求,則返回nil

10

os.time([table])

返回不帶參數調用的當前時間,或表示給定表指定的日期和時間的時間。 此表必須包含字段年,月和日,並且可能包含字段小時(默認值為12),分鍾(默認值為0),秒(默認值為0)和isdst(默認值為nil)。 有關這些字段的說明,請參見os.date函數。

11

os.tmpname()

返回一個文件名,該文件名可用於臨時文件。 文件必須在使用前顯式打開,並在不再需要時顯式刪除。

常見的OS功能

使用常見數學函數的簡單示例如下所示 -

-- Date with format
io.write("The date is ", os.date("%m/%d/%Y"),"\n")
-- Date and time
io.write("The date and time is ", os.date(),"\n")
-- Time
io.write("The OS time is ", os.time(),"\n")
-- Wait for some timefor i=1,1000000 doend
-- Time since Lua started
io.write("Lua started before ", os.clock(),"\n")

 

當運行上面的程序時,將得到類似的輸出如下 -

The date is 01/25/2018
The date and time is 01/25/18 07:38:40
The OS time is 1490615720
Lua started before 0.013

上面的例子只是一些常見的例子,可根據自己的需要使用OS庫,建議嘗試使用所有的功能以便更加熟悉。像remove這樣的函數有助於刪除文件,執行有助於於執行OS命令。

--------------------------------------------------

轉載於:https://www.yiibai.com/lua/lua_operating_system_facilities.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM