• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            ::^喬喬^::明鏡臺::原創空間::C#.NET2.0,C++技術BLOG
            人最重要的是心境,一顆平靜安穩的心才能更好的進步,保持自己的心態.成為夢想中的高手QQ群:8664695
            posts - 17,comments - 32,trackbacks - 0

            1、lua學習之入門(一)----環境搭建

            2、lua學習之入門(二)----基礎語法1

            3、lua學習之入門(二)----基礎語法2

            4、lua學習之入門(三)----函數

            ????? 編程語言之所以叫做語言,因為它具有語言的特性,我們回憶一下學英語的過程,首先是學ABC字母,然后是單詞,然后是句子,最后到文章..其實編程語言也具有這樣的特性,標識符等于"字母",值和變量還有API等于"單詞",語句塊或函數,甚至是類等于"句子",一個程序就是一篇"文章"..今天我學習的是"句子",也就是語句塊.

            ????????在LUA里語句塊是由以下幾個構成的

            第一:?? 語句組Chunks??

            chunk?:: = ?{stat?[`;′]}

            這兒不允許有空的語句段,所以?
            ' ;; ' ?是非法的。?

            lua?把一個?chunk?當作一個擁有不定參數的匿名函數(參見?§
            2.5 . 9 )處理。正是這樣,chunk?內可以定義局部變量,接收參數,并且返回值。?

            chunk?可以被保存在一個文件中,也可以保存在宿主程序的一個字符串中。當一個?chunk?被執行,首先它會被預編譯成虛擬機中的指令序列,然后被虛擬機解釋運行這些指令。?

            chunk?也可以被預編譯成二進制形式;細節參考程序?luac。用源碼形式提供的程序和被編譯過的二進制形式的程序是可以相互替換的;?Lua?會自動識別文件類型并做正確的處理。?

            在手冊里,只有這簡短的解析,對于一個初學者,其實真是很抽象(某XX教授:手冊有名字給你叫手冊,用來查不是用來學的..我曰:沒有其他學習資料只有手冊的時候,它就是最好的學習資料.你是教授,級別高,可以單看代碼研究,偶水平差只能折騰手冊!)

            Chunks其實是一個代名,Chunk可以是簡單的一句print("haha");也可以是一個函數外加一個輸出,輸入語句,甚至可以是一個文件,例如我們第一篇測試時候的test.lua....你可以簡單的理解為Chunk是統稱..代表著一個由語句組成的集合..

            第二:語句塊blocks
            語句塊是一列語句段;從語法上來說,一個語句塊跟一個?chunk?相同:?

            ????block?::
            =?chunk

            一個語句塊可以被顯式的寫成一個單獨的語句段:?

            ????stat?::
            =?do?block?end

            顯式的語句塊對于控制變量的作用范圍很有用。有時候,顯式的語句塊被用來在另一個語句塊中插入?
            return?或是?break?
            代碼塊(語句塊):指一個控制結構內,一個函數體,或者一個chunk(變量被聲明的那個文件或者文本串)。

            第三:控制結構

            ??? 注意:??? 控制結構的條件表達式結果可以是任何值,Lua認為falsenil為假,其他值為真。

            ??????? 大學時候,老師跟我說,所有編程語言都是由三種結構組成,順序結構,選擇結構,循環結構.個人認為..這樣設置的原因,和人的生活有很大關系,我們從生老病死,這個就是一個最簡單的順序結構.從生存到消失.人都需要的經歷,但在生老病死的過程中我們又要面臨選擇..老爸老媽沒得選擇...你還沒生,就是你還不存在,所以你沒選擇的權利,那么就是說選擇是建立在已經存在的基礎上的,所以編程就有了if(某某XX某某某)某某勝利..所以這個選擇必須要是有選擇前提的,如果這個選擇是永遠都沒機會選擇..(例如選擇老母- -!沒得選的)這個選擇就沒有了選擇的意義了,還有循環,就是重復實現某事情,例如讀書,7點起床然后上課,然后下課,然后沖涼,然后睡覺,然后又重復到7點起床然后上課,然后下課,然后沖涼,然后睡覺,然后又重復到7點起床..............,這就是一個循環.你必須重復地做某些事情的時候,就可以用循環這個結構是實現重復做某事.

            ???????? 既然人的一生都是用這三中結構描述的,程序的出現,目的就是幫助人,減輕人的工作量,做這些結構也就是編程語言中的原住民了.

            LUA的選擇結構,貌似只有一種就是if
            stat?::=?if?exp?then?block?{elseif?exp?then?block}?[else?block]?end
            簡單的一句,就表明了,if-else支持嵌套elseif? 寫法有點像VB....
            if?a>10?then??print("超過10歲")?
            else?print("小于10歲")?
            ?? end
            這個就是一個簡單的選擇結構...有編程基礎的一看就懂了.

            LUA的循環結構,有三種,分別是while exp do block end , repeat block until exp ,for Name `=′ exp `,′ exp [`,′ exp] do block end
            1.while exp do block end
            while?condition?do

            ????statements;

            end;
            2. repeat block until exp
            repeat

            ????statements;

            until?conditions;
            有點類似do?
            while
            3.for....在LUA里for是有兩種情況,如果用C#來描述的話,LUA的for含蓋了C#里的for和foreach兩種,

            ????? 數值for

            for?var=exp1,exp2,exp3?do

            ????loop
            -part

            end
            for將 從exp1(初始值)到exp2(終止值),exp3是一個變化跨度值, 執行loop
            -part。其中exp3可以省略,默認跨度默認為1
            和傳統的for結構一樣for(int i=0;i<10;i++),只是在LUA里簡化了很多;
            例子:
            ?? for i=10,1,-2 do

            ?????? print(i)

            ?? end

            輸出結果為;
            10
            8
            6
            4
            2
            有幾點需要注意:
            ????????? 1. 三個表達式只會被計算一次,并且是在循環開始前。
            ????????? 2. 控制變量var是局部變量自動被聲明,并且只在循環內有效.
            ????????? 3. 循環過程中不要改變控制變量的值,那樣做的結果是不可預知的。如果要退出循環,使用break語句


            范型for循環:
            for?namelist?in?explist1?do?block?end

            這里和C
            #的foreach基本一樣
            c#:
            foreach(DataRow?ss?in?dataTbale.Rows)
            {
            ??
            //輸出ss[1]
            }

            LUA里
            days?
            =?{"Sunday",?"Monday",?"Tuesday",?"Wednesday",

            ??????????????
            "Thursday",?"Friday",?"Saturday"}

            for?v?in?ipairs(days)?do

            ????
            print(days[v]);

            end?

            只要自己測試一下就知道結果了.
            反正就是一個傳統循環,一個迭代循環


            還需要補充一個語句就是break,和return
            break語句用來退出當前循環(for、repeat、while)。在循環外部不可以使用。

            return用來從函數返回結果,當一個函數自然結束時,結尾會有一個默認的return。(這種函數類似pascal的過程(procedure))

            Lua語法要求break和return只能出現在block的結尾一句(也就是說:作為chunk的最后一句,或者在end之前,或者else前,或者until前),例如:

            local?i?
            =?1

            while?a[i]?do

            ????
            if?a[i]?==?v?then?break?end

            ????i?
            =?i?+?1

            end

            有時候為了調試或者其他目的需要在block的中間使用return或者break,可以顯式的使用do..end來實現:

            function?foo?()

            ????
            return????????????--<<?SYNTAX?ERROR

            ????
            --?'return'?is?the?last?statement?in?the?next?block

            ????do?
            return?end????????--?OK

            ???????????????????
            --?statements?not?reached

            end

            基本的結構我們都學習完了,學到這里我們基本的LUA都能看懂了,也不能算懂,起碼知道LUA的大概意思了,基礎語法(完)


            明鏡臺
            posted on 2009-05-12 14:50 ^喬喬^ 閱讀(8688) 評論(0)  編輯 收藏 引用 所屬分類: Lua學習筆記
            激情久久久久久久久久| 亚洲人成网站999久久久综合| 99久久免费国产精品特黄| 久久综合久久性久99毛片| 久久人人爽人人爽人人片AV不| 亚洲国产精品高清久久久| 很黄很污的网站久久mimi色| 中文精品99久久国产| 久久狠狠色狠狠色综合| 亚洲国产天堂久久久久久| 国产Av激情久久无码天堂| 久久九九免费高清视频| 久久久久亚洲av无码专区导航 | 欧美精品丝袜久久久中文字幕 | 潮喷大喷水系列无码久久精品| 久久美女网站免费| 一级a性色生活片久久无| 久久国产精品一区二区| 久久狠狠爱亚洲综合影院| 久久久精品久久久久特色影视 | 国产精品久久久久久久久久免费| 欧美亚洲国产精品久久| 久久天天躁狠狠躁夜夜av浪潮 | 久久久久精品国产亚洲AV无码| 亚洲国产精久久久久久久| 欧美精品国产综合久久| 久久亚洲欧洲国产综合| 精品一久久香蕉国产线看播放| 91精品国产高清久久久久久io| 狠狠色丁香久久婷婷综合图片| 精品99久久aaa一级毛片| 久久亚洲综合色一区二区三区| 日韩精品久久久久久免费| av色综合久久天堂av色综合在| 欧美精品九九99久久在观看| 久久91精品国产91久| 久久亚洲AV成人无码| 色综合久久中文字幕无码| 久久综合香蕉国产蜜臀AV| 国产精品久久久久久久久免费 | 一本色综合久久|