1. 程式人生 > >lua函式精講(一)

lua函式精講(一)

函式的用途: 1.完成指定的任務,這種情況下作為呼叫語句使用。 2.計算並返回值,這種情況下,函式作為賦值語句的表示式使用。 函式的引數為空,必須使用()表示函式呼叫。例外:當函式只有一個引數,並且這個引數是字串或表構造時,()是可選的。 lua提供了面向物件呼叫函式的語法 o:foo(x)與o.f(o,x)是等價的。
lua函式的實參與形參的匹配與賦值語句類似,多餘部分被忽略,缺少部分nil補足。 lua函式可以返回多個值,return後列出要返回值的列表即可返回多值 s, e = string.find("hello lua", "lua")
那麼,lua是如何調整函式返回值的個數來適應呼叫環境的呢? 1. use as statement,所以返回值被忽略。 2. use as expression
  • 當作為表示式最後一個引數或僅有的一個引數時,根據變數個數,函式儘可能多地返回多個值,不足補nil,超出捨去。
  • 其他情況函式呼叫返回第一個值(如果無返回值為nil)
  • 函式呼叫作為函式引數被呼叫時,和多值賦值相同
  • 函式呼叫在表構造中初始化時,和多值賦值相同
  • return f(); f()返回所有值。可以使用括號強制返回一個值return (f())
c語言中,可以使用函式指標來呼叫可變的函式,可以宣告引數可變的函式,但不能兩者同時可變。 Lua可以這樣來呼叫可變引數的可變函式:f(unpack(a)) unpack接受一個數組作為輸入引數,返回陣列所有的元素。注意是數字,返回ipair遍歷結果 f = string.find a = {"hello lua", "lua"} print(f(unpack(a))) 可變引數使用...表示,Lua將可變引數放在arg的表中,含有一個域n表示引數的個數 (5.1+:用...取代了arg。如:
function printArgLen(...)
print(select("#", ...))
end
)

function select(n, ...)      return arg[n] end 給函式引數命名:可以把表作為函式的唯一引數來實現命名引數的功能。 rename {old="temp.lua", new="temp1.lua"} function rename(arg)      os.rename(arg.old, arg.new) end 當引數比較多,或容易混淆時,可以採用命名引數。 完 ------------------ 2015/3/3:新版lua沒有名叫arg的表了。

相關推薦

lua函式()

函式的用途: 1.完成指定的任務,這種情況下作為呼叫語句使用。 2.計算並返回值,這種情況下,函式作為賦值語句的表示式使用。 函式的引數為空,必須使用()表示函式呼叫。例外:當函式只有一個引數,並且這個引數是字串或表構造時,()是可選的。 lua提供了面向物件呼叫函式的語

maven如何編譯(陳老師看就懂)

陳老師說了,沒強調的意味著現在不要花精力去研究,會用即可。後面不斷用它自然不就會了嗎。   maven被陳老師講完之後簡直太特麼簡單了,以下是步驟: 1. eclipse- new project--maven 建立maven專案 2. 一直next即可,group id就

Android動畫 從setTranslationX談屬性動畫和view動畫的區別

                            最近又用到了動畫,決定把幾次專案裡用到的動畫走過的彎路總結一下,順便梳理下android的動畫體系。眾所周知,android動畫分三類:一是View 動畫,又叫Tween動畫,二是frame 動畫(幀動畫),又叫drawable 動畫,三是屬性動畫,即p

PHP Session:理解SESS…

Session ID       Session ID 是伺服器端為了識別每個客戶端,分給客戶端的唯一識別符號,格式是隨機生成的一串字串,具有唯一性,隨機性。使用者第一次訪問網頁的時候,php的session初始化函式呼叫會分配給當前來訪使用者一個唯一的ID,被稱之為session_id。當然如果不想使用系

Mybatis()---環境配置及架構梳理

目錄 簡介 ORM模型 Hibernate Ibatis 環境搭建 jar 配置 xml方式配置 程式碼方式配

第三百六十節,Python分布式爬蟲打造搜索引擎Scrapy—倒排索引

索引原理 文章 根據 file 索引 -i span 需要 style 第三百六十一節,Python分布式爬蟲打造搜索引擎Scrapy精講—倒排索引 倒排索引 倒排索引源於實際應用中需要根據屬性的值來查找記錄。這種索引表中的每一項都包括一個屬性值和具有該屬性值的各記錄的

BGP()——原理及內外部鄰居配置

BGPBGP概述 一、BGP/BGP4:Border Gateway Protocol,邊界網關協議 是一種基於距離矢量算法的自治系統之間的路由。 二、BGP並非要找到具體的網絡信息,而是提供可以用與找到自治系統的信息。 而運行於自治系統內部的路由協議,用於找到

Redis 總結篇成高手系統 四

本文圍繞以下幾點進行闡述 1、為什麼使用redis 2、使用redis有什麼缺點 3、單執行緒的redis為什麼這麼快 4、redis的資料型別,以及每種資料型別的使用場景 5、redis的過期策略以及記憶體淘汰機制 6、redis和資料庫雙寫一致性問題 7、如何應對快取穿透和快取雪崩問題 8

MyRedis總結-看篇成高手系列4

本文圍繞以下幾點進行闡述 1、為什麼使用redis 2、使用redis有什麼缺點 3、單執行緒的redis為什麼這麼快 4、redis的資料型別,以及每種資料型別的使用場景 5、redis的過期策略以及記憶體淘汰機制 6、redis和資料庫雙寫一致性問題 7

Redis 總結篇成高手系統-4

本文圍繞以下幾點進行闡述 1、為什麼使用redis 2、使用redis有什麼缺點 3、單執行緒的redis為什麼這麼快 4、redis的資料型別,以及每種資料型別的使用場景 5、redis的過期策略以及記憶體淘汰機制 6、redis和資料庫雙寫一致性問題 7、如何應對快取

QT:控制元件)按鈕

Qt Creater提供6種Button控制元件。如圖1。 Button控制元件介紹 控制元件類 控制元件名 中文名 QPushButton PushButton 推動按鈕

DispatchServlet原始碼解析()OnRefresh初始化

1.  固定特殊bean的id /** 用於檔案上傳解析 */ public static final String MULTIPART_RESOLVER_BEAN_NAME = "multipartResolver"; /** 用於區域解析 */ pub

Junit 例項基礎教程() 認識Junit基本註解@Before、@After、@Test、@BeforeClass、@AfterClass

關於Junit,官文甚至不做過多解釋:Junit只是一個用於單元測試的小框架,是基於xUnit架構的一個實現。 系列教程基於Maven。 1. 引入Junit依賴 <dependencies> <dependenc

Keepalived案例:Keepalived雙機熱備(HA)

這裡我們僅僅只利用Keepalive做雙機熱備,也就是保證伺服器的高可用性,其他的不用管。可能您會說這樣在實際應用中很少會這樣用,這您可就錯了,Keepalived僅僅做雙機熱備的情況還是有的,我就碰到過幾次這樣的案例,下面就我碰到的幾個案例做個小結一,Keepalived

轉 Redis 總結篇成高手系統-4

客戶端 p s 內存不足 軟件企業 redis。 epo 統一 sites 推薦 轉 Redis 總結精講 看一篇成高手系統-4 2018年05月31日 09:00:05 hjm4702192 閱讀數:125633 本文圍繞以下幾點

Redis 總結篇成高手系統4

set 有效 雪崩 預熱 是否 分析 並且 處理 0ms 本文圍繞以下幾點進行闡述 1、為什麽使用redis2、使用redis有什麽缺點3、單線程的redis為什麽這麽快4、redis的數據類型,以及每種數據類型的使用場景5、redis的過期策略以及內存淘汰機制6、red

UniRx):UniRx簡介&定時功能實現

# 1.UniRx 簡介 UniRx 是一個 Unity3D 的程式設計框架。它專注於解決時間上非同步的邏輯,使得非同步邏輯的實現更加簡潔和優雅。 ## 簡潔優雅如何體現? 比如,實現一個“只處理第一次滑鼠點選事件”這個功能,使用 UniRx 實現如下: ``` csharp Observable.Ever

響應式WebClient第6篇-請求失敗自動重試機制,強烈建議你看

![精講響應式WebClient第6篇-請求失敗自動重試機制](https://img2020.cnblogs.com/other/1815316/202008/1815316-20200826092554662-1026877669.png) 本文是精講響應式WebClient第6篇,前篇的blog訪問地

系統分析師教程知識點之標準化知識

系統分析師 軟考系統分析師在2017上半年開考,整理了一些系統分析師教程知識點精講。 標準化知識 按照ISO/IEC9126,軟件質量模型包括6個質量特性和21個質量子特性: SW-CMM軟件采辦能力成熟度模型:關註的是軟件購買者的軟件能力成熟度; 而CMM關註的是軟件

第7章第1維數組

min display %d mar image 技術分享 分享 lock images main() { int a[10],i,max,min; float ave=0; for(i=0;i<N;i++) sc