免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

Lua程序設計之深入函數-創新互聯

先看一個函數:

成都創新互聯公司是一家專注于成都網站設計、成都做網站與策劃設計,西區網站建設哪家好?成都創新互聯公司做網站,專注于網站建設十載,網設計領域的專業建站公司;建站業務涵蓋:西區等地區。西區做網站價格咨詢:13518219792

function derivative(f,delta)

    delta = delta or1e-4

    return function(x)

        return (f(x+delta)-f(x))/delta

    end

end

對特定的函數f調用derivative(f)將(近似地)返回其導數,例如

c=derivative(math.sin)

print(math.cos(10),c(10)) --c(10)這樣的調用相當于derivative(math.sin)(10)

這個例子最讓我驚奇的是,10這個參數可以直接通過(10)的方式傳進去里面嵌套的函數。

1. 閉合函數,closure,就是一個函數加上該函數所需訪問的所有“非局部的變量”。

2. 非局部的變量,就是在內部嵌套函數可以訪問的位于其外部嵌套環境中的局部變量,即不是全局變量也不是局部變量。即上面例子中的delta或者下面例子中的i。

例子:

    Function newCounter()

        local i= 0 –非局部變量

        return function()

            i= i+1

        return i

    end

c1 =newCounter() -- not c1 = newCounter,

Print(c1()) --1 相當于 newCounter()()

Print(c1()) --2 相當于 newCounter()()

    由于創建變量i的函數(newCounter)已經返回,所以之后的每次調用每次調用匿名函數時,i都應是已經超出了作用范圍,但其實lua會以closure的概念來正確地處理這種情況。

    在這里,不禁要問,這里的i是怎樣保存起來的,是類似于c++中的局部靜態變量嗎?

    這里有一個答案來自網上:對于閉合函數而言,屬于它的非局部變量,并不是在調用它的時候臨時產生的,而是和它一起存在的。所以每次調用閉合函數,非局部變量的值都不會被重置。

3. 閉合函數的應用(重定義函數):沙盒

4. 由于閉合函數的特殊,我們需要注意兩種情況:a.非全局函數的調用順序(需要前向聲明嗎?),function func () … end的寫法只是一種語法糖,它相當于func = function。b.正確的尾調用。

另外有需要云服務器可以了解下創新互聯scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

當前標題:Lua程序設計之深入函數-創新互聯
本文網址:http://m.newbst.com/article14/jgjge.html

成都網站建設公司_創新互聯,為您提供小程序開發App設計營銷型網站建設網站營銷網站收錄手機網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設