• <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>
            ::^喬喬^::明鏡臺::原創(chuàng)空間::C#.NET2.0,C++技術(shù)BLOG
            人最重要的是心境,一顆平靜安穩(wěn)的心才能更好的進步,保持自己的心態(tài).成為夢想中的高手QQ群:8664695
            posts - 17,comments - 32,trackbacks - 0

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

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

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

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

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

            ????????在LUA里語句塊是由以下幾個構(gòu)成的

            第一:?? 語句組Chunks??

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

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

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

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

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

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

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

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

            ????block?::
            =?chunk

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

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

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

            第三:控制結(jié)構(gòu)

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

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

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

            LUA的選擇結(jié)構(gòu),貌似只有一種就是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
            這個就是一個簡單的選擇結(jié)構(gòu)...有編程基礎(chǔ)的一看就懂了.

            LUA的循環(huán)結(jié)構(gòu),有三種,分別是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兩種,

            ????? 數(shù)值for

            for?var=exp1,exp2,exp3?do

            ????loop
            -part

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

            ?????? print(i)

            ?? end

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


            范型for循環(huán):
            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?

            只要自己測試一下就知道結(jié)果了.
            反正就是一個傳統(tǒng)循環(huán),一個迭代循環(huán)


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

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

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

            local?i?
            =?1

            while?a[i]?do

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

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

            end

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

            function?foo?()

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

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

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

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

            end

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


            明鏡臺
            posted on 2009-05-12 14:50 ^喬喬^ 閱讀(8686) 評論(0)  編輯 收藏 引用 所屬分類: Lua學習筆記
            久久综合给合久久狠狠狠97色69| 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲综合久久综合激情久久| 亚洲一区中文字幕久久| 久久久久久国产精品美女| 久久99久国产麻精品66| 久久精品草草草| 久久久久久久精品妇女99| 久久久综合九色合综国产| 亚洲人成无码久久电影网站| 久久久久亚洲精品无码蜜桃| 久久这里有精品视频| 2022年国产精品久久久久| 亚洲国产精品无码久久久久久曰 | 国产精品久久久久久久人人看| 日韩人妻无码精品久久久不卡 | 精品无码久久久久国产动漫3d| 91性高湖久久久久| 国产精品无码久久久久久| 欧美激情精品久久久久久久| 国产精品18久久久久久vr | 国产精品久久国产精麻豆99网站| 四虎国产精品免费久久| 国产精品无码久久四虎| 久久亚洲欧美日本精品| AAA级久久久精品无码片| 国产毛片欧美毛片久久久 | 久久免费香蕉视频| 18岁日韩内射颜射午夜久久成人| 欧美午夜精品久久久久免费视 | 久久久久亚洲AV无码去区首| 久久久久夜夜夜精品国产| 精品熟女少妇av免费久久| 久久亚洲AV成人出白浆无码国产| 综合久久一区二区三区 | 精产国品久久一二三产区区别 | 77777亚洲午夜久久多喷| 久久精品国产亚洲AV香蕉| 久久九九久精品国产免费直播| 亚洲精品第一综合99久久| 亚洲欧美一区二区三区久久|