Lua和C++的通訊流程分解_Lua

來源:互聯網
上載者:User

網上關於Lua的教程似乎還沒有泛濫,最近剛好學習在Cocos2d-x使用Lua,當然了,我是寫教程狂,我會分享我的學習心得的~
(旁白:我噗~!每次你寫東西我就要吐槽,你不累麼= =)
 
這是第一課,先來讓Lua和C++認識一下,順便讓它們逛街吃飯牽小手什麼的…
(旁白:。。。吹,繼續吹)

1. Lua的堆棧和全域表

我們來簡單解釋一下Lua的堆棧和全域表,堆棧大家應該會比較熟悉,它主要是用來讓C++和Lua通訊的,是的,它們並不認識對方,只能通過堆棧來溝通,就像寫信一樣。
(旁白:它們不會用微信嗎?!微信~!不知道?)
 
Lua的全域表又是什麼呢?可以想象成是一個map雜湊表結構,比如Lua有一個變數:

複製代碼 代碼如下:
name = “hello”

那麼,全域表就存放了”name”和”hello”的對應關係,Lua可以通過name在全域表中尋找到hello。應該是這樣的~
(旁白:應該= =!)

2. Lua和C++的第一次通訊

現在來設計一個情境,C++在一次JavaScript開發人員大會上看到Lua在演講,於是C++被Lua深深吸引了。
(旁白:JavaScript大會…那為毛是Lua在演講~!)
 
我們來看看這位美麗的Lua小姐長什麼樣:

複製代碼 代碼如下:
-- hello.lua 檔案
myName = "beauty girl"

OK,一位簡單又美麗Lua小姐。
然後,C++想知道Lua叫什麼名字,所以,它們必須要通訊了。來看看通訊流程:

請注意紅色數字,代表通訊順序:
1) C++想擷取Lua的myName字串的值,所以它把myName放到Lua堆棧(棧頂),以便Lua能看到
2) Lua從堆棧(棧頂)中擷取myName,此時棧頂再次變為空白
3) Lua拿著這個myName去Lua全域表尋找myName對應的字串
4) 全域表返回一個字串”beauty girl”
5) Lua把取得的“beauty girl”字串放到堆棧(棧頂)
6) C++可以從Lua堆棧中取得“beauty girl”,也就是這位美麗的Lua小姐的名字了~
世界如此美妙,這是如此的簡單。
(旁白:好吧,這次不吐槽,確實簡單…)
 
不過,(旁白:我就知道~!我就知道事情沒有那麼簡單!)這隻是最簡單的情況,實際上各種C++和Lua的操作比這要複雜多了,但基本原理是一樣的。
好的,趁著旁白還沒有吐槽,我們要結束第一章了,希望能幫到大家。
(旁白:說得好像我好喜歡搶戲似的,我像這樣的人嗎?= = 等等~!例子呢?Demo呢?)
 
噢,Demo將在下一章介紹。
(旁白:吊胃口。。。絕對是在吊胃口…你以為我會期待嗎,魂淡…心好癢~!)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.