• <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學(xué)習(xí)之入門(一)----環(huán)境搭建

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

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

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

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

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

            第一:?? 語句組Chunks??

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

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

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

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

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

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

            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為假,其他值為真。

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

            ???????? 既然人的一生都是用這三中結(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é)果是不可預(yù)知的。如果要退出循環(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)我們都學(xué)習(xí)完了,學(xué)到這里我們基本的LUA都能看懂了,也不能算懂,起碼知道LUA的大概意思了,基礎(chǔ)語法(完)


            明鏡臺
            posted on 2009-05-12 14:50 ^喬喬^ 閱讀(8693) 評論(0)  編輯 收藏 引用 所屬分類: Lua學(xué)習(xí)筆記
            色综合久久综合网观看| 亚洲午夜久久久久久久久电影网| 亚洲综合久久久| 精品欧美一区二区三区久久久| 伊人久久大香线蕉亚洲五月天| 亚洲欧洲精品成人久久奇米网| 精品视频久久久久| 久久精品国产色蜜蜜麻豆| 91精品国产高清久久久久久91| 久久精品视频免费| 九九99精品久久久久久| 国内精品久久久久久99蜜桃| 久久精品国产一区| 久久久久亚洲av成人无码电影| 久久精品国产99国产精品| 国产2021久久精品| 久久精品中文字幕有码| 久久精品综合网| 亚洲va久久久噜噜噜久久 | 日产精品久久久一区二区| 亚洲国产精品无码久久98| 国产麻豆精品久久一二三| 91久久精品电影| 亚洲中文字幕伊人久久无码| 狠狠综合久久AV一区二区三区| 久久婷婷激情综合色综合俺也去| 久久se精品一区精品二区| 久久久久人妻一区精品| 色诱久久久久综合网ywww| 久久精品国产91久久麻豆自制| 久久精品国产精品亚洲人人| 久久午夜夜伦鲁鲁片免费无码影视| 韩国免费A级毛片久久| 久久成人18免费网站| 亚洲精品国精品久久99热一| 色综合久久最新中文字幕| 亚洲精品成人久久久| 久久91精品国产91久久户| 亚洲欧美伊人久久综合一区二区| 久久伊人精品青青草原高清| 亚洲精品tv久久久久久久久|