成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

初學者必備文檔:Lua初學常見問題解析

移動開發 iOS
Lua是一種單獨的語言!在語言的特性以及實現上,Lua設計者有他們的取舍。高效、簡潔、方便是Lua的特點。Lua的面向對象特性類似Javascript,都是基于原型機制(而非類機制)實現。

Lua初學常見問題解析是本文要介紹的內容,主要是來講解初學LUA時應該要怎樣去學習,具體內容來看本文詳解。

1、學習lua需要什么基礎?

很顯然,lua不適合作為你第一個編程語言,因為它需要比較深的c語言編程基礎,而且對于數據結構有一定的了解,最關鍵的是它的功能函數并不完整,需要很多額外第三方支持,比如最基本的socket。所以學習lua最好有c或者c++的基礎。

2、學習lua應該看什么文檔?

最好從Programming In Lua (簡稱PIL)中文版看起,非常有幫助,最好是逐字逐句的看。文檔在這里可以下載:http://groups.google.com/group/lua5 或者 http://sunxiunan.com/?p=1512

在Lua for windows這個整合安裝包中包含了PIL和Lua manual這兩個文檔的英文版。

3、如何在windows下使用lua?

可以在Luaforge上找到編譯好的Lua lib/dll/exe。

windows下最好是使用Lua for windows http://luaforge.net/projects/luaforwindows/,里面會包含一些常用的模塊,比如luasocket,luasql,sqlite等。而且還包含了一個編輯器Scite,可以通過它來對lua腳本進行簡單的調試,不需要額外安裝什么IDE了。

如果你要自己編譯Lua,可以在lua.org下載Lua的源代碼,解壓以后,參考readme文件,里面介紹的很詳細。如果使用VC2008,也可以直接下載lua_vc2008.rar

4、lua如何進行網絡編程?

通過luasocket這個擴展庫。具體信息可以在http://luasocket.luaforge.net/ 找到,另外Lua for windows附帶了luasocket,安裝后可以直接使用。、

5、lua可不可以與c交互?

在PIL以及Lua manual上介紹了如何使用c語言編寫lua的第三方擴展,另外可以參考我的文章與示例代碼http://sunxiunan.com/?p=1498

c語言中調用lua也非常方便,可以靜態調用(通過lib),也可以動態調用(通過dll),使用lua增強c語言這樣靜態編譯語言的能力是非常有趣的。

(1)lua可不可以與c++交互?

c++可以通過c語言的方式與lua交互。另外c++可以通過luabind或者luaplus這樣的第三方庫支暴露類與類成員信息給lua使用,可以方便(?)c++開發者。

我個人對于c++與lua交互的看法可以參考勿用屠龍來殺豬-論如何正確整合Lua與C++

(2)lua可不可以與dotnet交互?

可以通過luainterface這個項目在lua中使用dotnet platform,或者在c# 中使用Lua,但是這個項目的穩定度與成熟度都還達不到可用的標準。

(3)lua可不可以直接調用windows api?

通過lua alien這個擴展庫

6、lua除了編寫魔獸世界的插件,還能做什么?

可以用lua來寫一些常用的程序,比如操作excel,比如定制一些查找。還可以把lua作為一種配置方式(類似ini文件或者cfg文件),因為lua的表,可以達到非常復雜的配置功能,另外lua的解析速度要比xml快多了。當然lua主要用處還是作為游戲的腳本支持語言。

7、lua可以調用windows api么?可以調用COM組件么?

可以自己編寫一個dll封裝對windows api的調用,或者用alien這個模塊??梢酝ㄟ^luacom來調用COM組件。BTW,通過COM組件調用可以實現對excel或者word的操作。

云風介紹了一種windows api調用的方法:http://blog.codingnow.com/cloud/LuaApiCall

8、學習、使用lua有什么必須知道的網站么?

  1. http://lua-users.org  
  2.  
  3. http://lua.org  
  4.  
  5. http://luaforge.org  
  6.  
  7. http://lua-faq.org  
  8.  
  9. http://www.keplerproject.org/ 

另外在云風http://blog.codingnow.com/的博客上也有不少關于Lua的好文章。

9、C/C++調用lua(比如使用dofile)常見的問題?

C++調用lua,必須用絕對路徑(c:\aaa\bbb.lua)而不是相對路徑。否則Lua虛擬機找不到這個文件。

10、Lua可以編譯后執行么?

可以通過luac將lua代碼編譯成Lua的虛擬機指令集。這樣可以隱藏原來代碼,在一些內存或者CPU受限的環境下直接使用編譯后的虛擬機也可節省硬件資源。

11、Lua能面向對象么?Lua為什么沒有類?Lua為什么沒有多態?Lua為什么沒有C++或者Java或者C#的這種那種特性?

Lua是一種單獨的語言!在語言的特性以及實現上,Lua設計者有他們的取舍。高效、簡潔、方便是Lua的特點。Lua的面向對象特性類似Javascript,都是基于原型機制(而非類機制)實現。類不是面向對象的必要特性。Lua的變量沒有類型定義(值value有),所以也不存在多態這種機制,就如同c++不容易實現duck typing一樣,取舍取舍,取了這樣自然要舍棄那樣。

在Lua中實現OO特性,可以參考下面的鏈接:http://lua-users.org/wiki/ObjectOrientedProgramming

或者在luaforge上搜索object,可以找到很多相關項目,如LOOP。

另外在PIL中也介紹了如何實現OO的方法。也可以參考云風的實現方式:http://blog.codingnow.com/cloud/LuaOO

12、Lua是否支持Unicode字符串?

Lua字符串可以容納任何字符(包括0),所以如果想把unicode字符存到Lua字符串中沒有任何問題,但是Lua的string標準庫只能處理單字節,所以想編程使用Unicode,需要另外支持,如icu4lua,詳細信息參考:

  1. http://lua-users.org/wiki/LuaUnicode 

13、a.f(x)與a:f(x)有什么區別?

簡單的說,a:f(x)是a.f(a, x)的一種簡寫形式,更方便函數調用。

14、require與dofile有什么區別?

這兩個函數都會載入并且運行lua腳本,區別是,require只需要指定模塊名字(不需要加入.lua .dll這樣后綴),而dofile需要指定文件的完整的實際路徑。

在windows下輸入以下命令lua -e "print(package.path)"來顯示package查找路徑。
第二個區別是require會記住load過的信息,重復調用不會導致模塊被重新載入(reload)。(我們可以通過dofile這種特性來實現熱更新)

第三個區別是require可以載入二進制模塊,如c語言編寫的動態庫,可以通過package.cpath來顯示動態庫查找的路徑信息。

如果你想載入的動態庫是在某個子目錄下,如c:\lua\5.1\lib\luasockets\core,可以通過點號形式來require,如require “socket.core”

15、如何顯式載入一個二進制動態庫(dll)?

可以通過package.loadlib來實現。

16、Lua有什么優化技巧么?

可以通過LuaProfiler來查看你程序中的瓶頸http://luaprofiler.luaforge.net,另外Lua gems中有篇文章非常值得參考Lua Performance Tips

也可以到http://lua-users.org/wiki/OptimisationCodingTips 來查看他人的經驗。

17、Lua有exception機制么?

沒有內置的,但是可以通過pcall來間接實現。

  1. local status,err = pcall(function()  
  2. t.alpha = 2.0 — will throw an error if t is nil or not a table  
  3. end)  
  4.  
  5. if not status then  
  6. print(err)  
  7. end 

18、Lua與C交互時,能否管理用戶對象的生存期?

在The Implementation of Lua5.0中有介紹,userdata可以認為是用戶指定的一塊內存指針,分兩種:Heavy userdata是由Lua來做內存分配并且管理GC的,而Light userdata完全由用戶掌控內存分配銷毀。

19、優化的尾調用optimized tail calls可以做什么?

狀態機實現:

  1. – Define State A  
  2. function A()  
  3. dosomething”in state A”  
  4. if somecondition() then return B() end  
  5. if done() then return end  
  6. return A()  
  7. end  
  8.  
  9. – Define State B  
  10. function B()  
  11. dosomething”in state B”  
  12. if othercondition() then return A() end  
  13. return B()  
  14. end  
  15.  
  16.    
  17. – Run the FSM, starting in State A  
  18. A() 

20、我想把lua打包成exe,如何做?

可以使用srlua、L-Bia這樣的lua項目,另外可以使用lua2c這個工具把lua代碼編譯成c語言代碼,然后通過include在c語言中直接使用。

21、什么是函數環境Function Environments?

簡單的說,函數環境就是全局表global table。可以用來實現sandbox沙箱功能。

  1. function test ()  
  2. return A + 2*B  
  3. end  
  4. t = { A = 10B = 20 }  
  5. setfenv(test,t)  
  6. print(test())  
  7. => 
  8. 50 

22、如何實現命名參數named parameters?

  1. function named(t)  
  2. local name = t.name or ‘anonymous’  
  3. local os = t.os or ‘<unknown>’  
  4. local email = t.email or t.name..’@’..t.os  
  5. …  
  6. end  
  7. named {name = ‘bill’, os = ‘windows’} 

23、Lua有沒有Ruby gem這種機制?

如果想自動安裝更新第三方模塊,可以使用luarocks。

24、Lua支持字符串正則查找替換么?

支持,參考string標準庫。也可以使用lpeg這個第三方模塊。

25、如何在c語言中遍歷一個Lua table?

  1. /* table is in the stack at index ‘t’ */  
  2. lua_pushnil(L); /* first key */  
  3. while (lua_next(L, t) != 0) {  
  4. /* uses ‘key’ (at index -2) and ‘value’ (at index -1) */  
  5. printf(“%s – %s\n”,  
  6. lua_typename(L, lua_type(L, -2)),  
  7. lua_typename(L, lua_type(L, -1)));  
  8.  
  9. /* removes ‘value’; keeps ‘key’ for next iteration */  
  10. lua_pop(L, 1);  

小結:關于初學者必備文檔:Lua初學常見問題解析的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-08-29 15:45:59

Lua函數

2011-08-24 17:19:20

Lua源文件

2013-02-20 10:13:38

JavaJava初學者

2015-12-21 11:45:27

C語言常見問題錯誤

2011-06-23 18:33:37

SEO

2011-08-23 14:01:03

LUA

2011-08-25 15:51:10

Lua腳本

2011-08-17 12:03:36

Objective-C

2011-08-12 10:27:52

Objective-C對象

2011-08-11 10:50:08

xcode調試文件

2011-09-08 10:38:37

Widget

2020-08-16 13:10:46

TensorFlow深度學習數據集

2010-05-12 17:36:44

MySQL初學者

2011-08-24 17:05:01

Lua

2011-08-05 14:16:47

Objective-C 變量 方法

2011-04-12 10:13:24

2011-09-16 09:38:19

Emacs

2022-04-24 15:21:01

MarkdownHTML

2022-10-19 23:18:27

KubernetesPod錯誤

2011-08-04 18:01:07

IOS Cocoa Touc
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产观看 | 国产一区精品在线 | 国久久| 久久伊人久久 | 久久精品国产久精国产 | 久热免费在线 | 久久精品一区 | 亚洲综合在线视频 | 福利在线观看 | 中文字幕在线一区二区三区 | 51ⅴ精品国产91久久久久久 | 九九99久久 | 欧美日韩高清免费 | 亚洲欧美综合 | 日本一区二区不卡视频 | 欧美精品久久久 | 欧美精品一区二区三区在线 | 蜜桃视频在线观看免费视频网站www | 国产精品爱久久久久久久 | 少妇性l交大片免费一 | 欧美一区二区三区在线看 | 国产一级片在线观看视频 | 欧美aaa级 | a在线视频 | 国产精品夜夜夜一区二区三区尤 | www.久久精品 | 精品国产一区二区三区性色av | 欧美性大战久久久久久久蜜臀 | 国产成人精品一区二区在线 | 国产精品自产拍 | 亚洲黄色网址视频 | www.亚洲视频.com | 国产精品国产精品国产专区不片 | 亚洲欧美一区二区三区1000 | 成人在线小视频 | 欧美在线一区二区三区 | 亚洲欧美日韩在线不卡 | 不卡视频一区 | 91亚洲国产成人久久精品网站 | 最新av中文字幕 | 国产成人91视频 |