• <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)的心才能更好的進(jì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ù)

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

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

            第一:?? 語句組Chunks??

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

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

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

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

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

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

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

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

            ????block?::
            =?chunk

            一個(gè)語句塊可以被顯式的寫成一個(gè)單獨(dú)的語句段:?

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

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

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

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

            ??????? 大學(xué)時(shí)候,老師跟我說,所有編程語言都是由三種結(jié)構(gòu)組成,順序結(jié)構(gòu),選擇結(jié)構(gòu),循環(huán)結(jié)構(gòu).個(gè)人認(rèn)為..這樣設(shè)置的原因,和人的生活有很大關(guān)系,我們從生老病死,這個(gè)就是一個(gè)最簡單的順序結(jié)構(gòu).從生存到消失.人都需要的經(jīng)歷,但在生老病死的過程中我們又要面臨選擇..老爸老媽沒得選擇...你還沒生,就是你還不存在,所以你沒選擇的權(quán)利,那么就是說選擇是建立在已經(jīng)存在的基礎(chǔ)上的,所以編程就有了if(某某XX某某某)某某勝利..所以這個(gè)選擇必須要是有選擇前提的,如果這個(gè)選擇是永遠(yuǎn)都沒機(jī)會選擇..(例如選擇老母- -!沒得選的)這個(gè)選擇就沒有了選擇的意義了,還有循環(huán),就是重復(fù)實(shí)現(xiàn)某事情,例如讀書,7點(diǎn)起床然后上課,然后下課,然后沖涼,然后睡覺,然后又重復(fù)到7點(diǎn)起床然后上課,然后下課,然后沖涼,然后睡覺,然后又重復(fù)到7點(diǎn)起床..............,這就是一個(gè)循環(huán).你必須重復(fù)地做某些事情的時(shí)候,就可以用循環(huán)這個(gè)結(jié)構(gòu)是實(shí)現(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? 寫法有點(diǎn)像VB....
            if?a>10?then??print("超過10歲")?
            else?print("小于10歲")?
            ?? end
            這個(gè)就是一個(gè)簡單的選擇結(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;
            有點(diǎn)類似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是一個(gè)變化跨度值, 執(zhí)行l(wèi)oop
            -part。其中exp3可以省略,默認(rèn)跨度默認(rèn)為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
            有幾點(diǎn)需要注意:
            ????????? 1. 三個(gè)表達(dá)式只會被計(jì)算一次,并且是在循環(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é)果了.
            反正就是一個(gè)傳統(tǒng)循環(huán),一個(gè)迭代循環(huán)


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

            return用來從函數(shù)返回結(jié)果,當(dāng)一個(gè)函數(shù)自然結(jié)束時(shí),結(jié)尾會有一個(gè)默認(rèn)的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

            有時(shí)候?yàn)榱苏{(diào)試或者其他目的需要在block的中間使用return或者break,可以顯式的使用do..end來實(shí)現(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 ^喬喬^ 閱讀(8704) 評論(0)  編輯 收藏 引用 所屬分類: Lua學(xué)習(xí)筆記
            国产精品美女久久久网AV| 免费无码国产欧美久久18| 国产一区二区三区久久| 99久久国产综合精品网成人影院| 久久99精品久久久久久水蜜桃| 欧美日韩久久中文字幕| 97久久香蕉国产线看观看| 亚洲第一永久AV网站久久精品男人的天堂AV | 久久久精品久久久久特色影视 | 久久久www免费人成精品| 久久超乳爆乳中文字幕| 久久大香萑太香蕉av| 久久九九青青国产精品| 亚洲国产精品无码久久| 久久国产精品视频| 2022年国产精品久久久久| 久久99热这里只频精品6| 精品国产综合区久久久久久| 久久综合噜噜激激的五月天| 久久国产精品二国产精品| 久久av无码专区亚洲av桃花岛| 久久久久亚洲?V成人无码| 99久久精品免费| 99久久国语露脸精品国产| 亚洲国产精品久久电影欧美| 伊人久久五月天| 欧美久久一级内射wwwwww.| 99久久综合狠狠综合久久| 久久精品a亚洲国产v高清不卡| 偷偷做久久久久网站| 久久中文字幕精品| 中文字幕日本人妻久久久免费| 中文成人无码精品久久久不卡| 国产免费福利体检区久久| 国产综合精品久久亚洲| 国产精品狼人久久久久影院| 国产精品久久久久影视不卡| 国产麻豆精品久久一二三| 久久99精品国产一区二区三区| 99久久er这里只有精品18| 99久久国产热无码精品免费 |