Lua 函式用法探究
在 中有涉及到函式的用法,但只是普通的應用,並沒有深成次的研究一下,介於函式用的還是比較多的就專門做個專題研究一下~
一、函式、變數的用法
函式的定義用關鍵字function 。然後加函式名和變數。注意後面沒有do。最後以end結束。
在函式中的變數預設是全域性變數,但通常情況下函式中的變數都是在函式中有效的。所以要在宣告的時候加上"local” 標明只在區域性有效。
二、返回多個結果值
在Lua中的函式可以返回多個返回值。這與C等語言有很大的不同。因為從根本上講Lua支援多賦值。
我猜測在內部執行時,多個返回值被封裝到了一個table中。然後在賦值時再按順序取出。
看這個示例:
[php] view plaincopyprint?- function max(a)
- local mi = 1
- local m = a[mi]
- for i,val in ipairs(a) do --其中i為順序位置,val為相應的值
- print("i= "..i.."val="..val)
- if val >m then
- mi = i
- m = val
-
end
- end
- return m,mi
- end
- print(max({8,10,23,12,5}))
這個函式的作用是返回一個數列中最大的值和下標。
在實際應用的過程中,在C中呼叫lua_pcall(L,0,2,0) 即可接受這兩個返回值入棧,然後通過 lua_tonumber(L,-1) 和 lua_tonumber(L,-2)即可
三、可變引數
Lua 函式可以接受可變數目的引數,和 C 語言類似在函式引數列表中使用三點(...)表示函式有可變的引數。
Lua 將函式的引數放在一個叫 arg 的表中,除了引數以外,arg表中還有一個域 n 表示引數的個數。
例如:
[php] view plaincopyprint?- function myprint(...)
- local printResult = "" --如果不顯式宣告,程式會自動檢查全域性的變數,會找不到出錯
- print(arg.n)
- for i,v in ipairs(arg) do
- printResult = printResult..tostring(v)..'\t'
- end
- printResult=printResult..'\n'
- return printResult
- end
- print(myprint(2,4,6,'2es'))
相關推薦
Lua 函式用法探究
在 中有涉及到函式的用法,但只是普通的應用,並沒有深成次的研究一下,介於函式用的還是比較多的就專門做個專題研究一下~ 一、函式、變數的用法 函式的定義用關鍵字function 。然後加函式名和變數。注意後面沒有do。最後以end結束。
Lua函式的幾種用法詳解
一、lua函式 在面嚮物件語言中函式是一組一起執行任務的語句。可以把程式碼放到獨立的函式中。怎麼劃分程式碼功能之間的不同,但在邏輯上劃分通常是讓每個函式執行特定的任務。在Lua中,函式是作為"第一類值"來使用的,在lua中函式可以儲存在變數中,可以通過引數傳遞給其他函式,或
glViewport函式用法
一、 其函式原型為glViewport(GLint x,GLint y,GLsizei width,GLsizei height) x,y 以畫素為單位,指定了視窗的左下角位置。 width,height表示視口矩形的寬度和高度,根據視窗的實時變化重繪視窗。 二、 在預設情況下,視口被設定為佔據視窗
ROW_NUMBER() OVER()函式用法;(分組,排序),partition by (轉)
1、row_number() over()排序功能: (1) row_number() over()分組排序功能: 在使用 row_number() over()函式時候,over()裡頭的分組以及排序的執行晚於 where group by order
numpy函式:tile函式用法
tile函式位於python模組 numpy.lib.shape_base中,他的功能是重複某個陣列。比如tile(A,n),功能是將陣列A重複n次,構成一個新的陣列 from numpy import * #initialize the array a = [0,1,2]
Oracle單行函式用法
單行函式分為五種型別:字元函式、數值函式、日期函式、轉換函式、通用函式。 1.字元函式: 對於輸入的字元轉換為需要轉為的字元或數值。 upper()大寫 --小寫字母轉為大寫字母 --對於表指定
C語言幾個函式用法小結
1.char *ultoa(unsigned long value,char *string,int radix) 將無符號整型數value轉換成字串並返回該字串,radix為轉換時所用基數 2.char *ltoa(long value,char *string,i
numpy中flatten()函式用法
flatten是numpy.ndarray.flatten的一個函式,其官方文件是這樣描述的: ndarray.flatten(order='C') Return a copy of the array collapsed into one dimension. Parameters:
strtol函式用法
之前想用C寫MD5函式用法,中間設計大量進位制轉換的內容,於是就查到了strtol這個函式 但是發現之前對其認識上有一些偏頗,所以把它的用法記錄下來 strtol是一個C語言函式,作用就是將一個字串轉換為長整型long,其函式原型為 long int strtol (const
getline() 函式用法
本文轉自:http://blog.sina.com.cn/s/blog_60263c1c0101ck25.html 學習C++的同學可能都會遇到一個getline()函式,譬如在C++premer中,標準string型別第二小節就是“用getline讀取整行文字”。書上給的程式如下:
PHP array_pad函式用法
<?php //填充陣列到制定長度 $array = [1,2,3,4]; $array1 = [ [1],[2],[3],[4] ]; print_r(array_pad($array,6, 'abc')); //執行結果:Array ( [0] => 1 [1] =
np.nonzero()函式用法
返回陣列中不為0的元素的下標。 陣列中元素可為布林、整型和浮點型,返回值為元祖 一.一維陣列 1.陣列元素為布林型別 a=np.array([True,False,True,False]) b=np.nonzero(a) print(b) 輸出結果為(array([0, 2], dtype
python中的print輸出函式用法總結
【時間】2018.10.12 【題目】python中的print輸出函式用法總結 一、直接輸出 無論什麼型別,數值,布林,列表,字典...都可以直接輸出,或者先賦值給變數,再輸出。 二、格式化輸出 下面是《Python基
Python中split()函式用法和例項
一、描述 split()通過指定分隔符對字串進行切片,如果引數num 有指定值,則僅分隔 num 個子字串 函式形式:str.split(str="", num=string.count(str)) 引數: str -- 分隔符,預設為所有的空字元,包括空格、換行(\n)、製表
numpy中:tile函式用法
tile函式位於python模組 numpy.lib.shape_base中,他的功能是重複某個陣列。比如tile(A,n),功能是將陣列A重複n次,構成一個新的陣列,我們還是使用具體的例子來說明問題 ①先來引入numpy下的所有方法 from numpy import *
【 MATLAB 】nextpow2 函式用法之 Optimize FFT with Padding
您可以使用nextpow2來填充傳遞給fft的訊號。 這樣做可以在訊號長度不是2的精確冪次時加速FFT的計算。 Optimize FFT with Padding 下面這個例子展示了 使用填充優化FFT的案例,通過使用函式nextpow2完成: clc c
ROW_NUMBER() OVER()函式用法詳解 (分組排序 例子多)
語法格式:row_number() over(partition by 分組列 order by 排序列 desc) row_number() over()分組排序功能: 在使用 row_number() over()函式時候,over()裡頭的分組以及排序的執行晚於 wher
C函式之memcpy 函式用法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
srand()以及rand()函式用法
srand()就是給rand()提供種子seed 如果srand每次輸入的數值是一樣的,那麼每次執行產生的隨機數也是一樣的, srand(n) for(10) rand()也就是說,以一個固定的數值作為種子是一個缺點。 通常的做法是 以這樣一句程式碼
libc system函式的探究
system導致父程序等待 在mac上的線上幫助有對system的如下說明: The system() function hands the argument command to the command interpreter sh(1). The calling p