亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

Lua中的函數淺析

2024-07-21 23:04:08
字體:
來源:轉載
供稿:網友

一、函數

在lua中函數的調用方式和C語言基本相同。 如print(“hello world”), z=add(x+y)。唯一的差別是,如果函數只有一個參數,并且該參數是字符串或者table構造器,那么圓括號可以省略,如print “hello world”, f{x=10,y=10}。

我對于table構造器的理解就是它本身就是一個構造函數或者是特殊化的結構體。

lua為面向對象也提供了一個新的特殊語法--冒號操作符。表達式o.foo(o,x) 的另一種寫法是o:foo(x)。

復制代碼 代碼如下:

   function add(a)
      local sum=0
      for i,v in ipairs(a) do
         sum=sum+v
      end
      return sum
   end

 

在以上聲明中,包含了函數名(add),參數列表(a),以及函數體。需要說明的是,Lua中實參和形參的數量可以不一致,一旦出現這種情況,Lua的處理規則等同于多重賦值,即實參多于形參,多出的部分被忽略,如果相反,沒有被初始化的形參的缺省值為nil。

1、多重返回值

 

復制代碼 代碼如下:

function maximum(a)
   local pos=1
   local maxx=a[1]
   for i, v in ipairs(a) do
       if v>maxx then
       pos,maxx=i,v
       end
   end
   return pos,maxx
end

 

print(maximum( {1,5,2,7,3,6} ))
--輸出 4 7

 

2、變長參數

lua中同一個函數可以接受不同數量的參數(參數項為 ... )

復制代碼 代碼如下:

function add(...)
  sum=0
  for i,v in pairs{...} do
     sum=sum+v
  end
  return sum
end

 


function mul(a,b,...)
  sum=a*b
  for i,v in pairs{...} do
     sum=sum*v
  end
  return sum
end

print(add(1,2,3,4,5))
print(add(1,2,3))
print(mul(1,2,3,4,5))

 

3、具名實參

lua中允許將多個參數合并在一個table中,當做一個參數傳入

復制代碼 代碼如下:

function foo(person)
  name=person.name
  age=person.age
  sex=person.sex
  ...
end

 

二、深入函數

在lua中函數和其他所有值一樣是匿名的,即它們沒有名稱,我們在操作的時候都在在操作該函數的變量。

復制代碼 代碼如下:

a = { p = print }
a.p("Hello World")
b = print
b("Hello World")

函數聲明的方式:
復制代碼 代碼如下:

function foo(x) return 2*x  end

 

foo=function(x) return 2*x end


下面展示了匿名函數的方便性
復制代碼 代碼如下:

table.sort(tab,function(a,b) return a.id<b.id end )

 

1、closure函數(閉包函數)

如果一個函數寫入另一個函數內,那么這個處于內部的函數可以訪問外部函數的局部變量。

復制代碼 代碼如下:

function newCounter()
    local i = 0   --"非局部變量",該變量可以被內部的匿名函數訪問并操作
                   --其值可以用于下一次函數訪問時計算
    return function() --匿名函數
        i = i + 1
        return i
    end
end
c1 = newCounter()
c2=  newCounter()
print(c1())
print(c2()) --不同閉包的“非局部變量“是相互獨立的
print(c1())
print(c2())
--輸出結果為:
--1
--1
--2
--2

 

為了加深理解,再來看一個例子

復制代碼 代碼如下:

function power(x)
  return function(y) --該參數為閉包變量傳入的參數
  return y^x
  end
end

 

power2=power(2) --power2,power3為閉包變量
power3=power(3)
print(power2(4))
print(power3(5))
--輸出
--16
--125

 

2、非全局函數

 

復制代碼 代碼如下:

Lib={}
Lib.add=function(x,y) return x+y end
Lib.sub=function(x,y) return x-y end
function Lib.add(x,y) return x+y end
function Lib.sub(x,y) return x-y end

 

Lib={
      add=function(x,y) return x+y end
      sub=function(x,y) return x-y end
}

do
   local f=function(x,y) return x+y end
   ...
   f(4,5)
end


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
伊人久久综合97精品| 国语自产精品视频在线看| 91精品国产综合久久久久久久久| 国产精品香蕉在线观看| 成人亚洲综合色就1024| 日韩久久免费视频| 爽爽爽爽爽爽爽成人免费观看| 日韩电影免费观看在线观看| 日韩在线中文字幕| 国产在线精品成人一区二区三区| 亚洲男人的天堂网站| 9.1国产丝袜在线观看| 亚洲九九九在线观看| 中文字幕亚洲一区二区三区| 久久综合久久美利坚合众国| 久久69精品久久久久久国产越南| 中文字幕日韩专区| 日本免费久久高清视频| 国产成人福利夜色影视| 亚洲激情成人网| 国产精品精品一区二区三区午夜版| 成人精品一区二区三区电影免费| 国产精品久久久久久久av电影| 精品国产拍在线观看| 精品福利一区二区| 日韩av在线免播放器| 欧美精品xxx| 91亚洲va在线va天堂va国| 欧美黑人国产人伦爽爽爽| 欧美日韩成人精品| 最新中文字幕亚洲| 不卡av电影在线观看| 久久五月天综合| 亚洲爱爱爱爱爱| 91精品一区二区| 日韩在线资源网| 日韩网站免费观看| 日韩美女视频免费看| 午夜精品三级视频福利| 国产欧美精品一区二区三区-老狼| 成人黄色影片在线| 亚洲男女性事视频| 久久久久久久一区二区三区| 国产欧美一区二区三区在线| 91欧美精品午夜性色福利在线| 亚洲天堂一区二区三区| 欧美日韩国产123| 欧美黑人性视频| 国产69久久精品成人| 岛国av一区二区在线在线观看| 日韩在线播放视频| 欧美日韩爱爱视频| 亚洲欧美日韩中文视频| 国产精品极品美女粉嫩高清在线| 国产亚洲精品va在线观看| 97婷婷涩涩精品一区| 欧美亚洲国产日韩2020| 91精品国产91久久久久久最新| 国产v综合v亚洲欧美久久| 国产精品午夜一区二区欲梦| 国产suv精品一区二区三区88区| 国产精品视频免费观看www| 18一19gay欧美视频网站| 久久视频中文字幕| 欧美中文字幕视频| 性欧美xxxx交| 国产精品视频男人的天堂| 欧美日韩中文字幕在线视频| 国产精品极品美女在线观看免费| 欧美日韩亚洲精品内裤| 国产精品中文字幕久久久| 高清欧美性猛交xxxx| 亚洲国产另类 国产精品国产免费| 欧美大片在线看免费观看| 亚洲第一色中文字幕| 欧美一级电影免费在线观看| 亚洲国产欧美一区二区三区同亚洲| 日韩av手机在线观看| 日本精品视频在线| 亚洲天堂男人天堂| 国产欧美一区二区三区四区| 国产精品99蜜臀久久不卡二区| 91成品人片a无限观看| 亚洲精品免费一区二区三区| 成人性生交大片免费观看嘿嘿视频| 欧美精品18videosex性欧美| 中文字幕在线视频日韩| 国产精品美女无圣光视频| 欧美性猛交xxxx免费看漫画| 国产精品久久久久久久久久尿| 91九色视频导航| 精品欧美激情精品一区| 日韩第一页在线| 丝袜亚洲欧美日韩综合| 久久久久久久色| 成人免费在线网址| 亚洲人成绝费网站色www| 91夜夜揉人人捏人人添红杏| 国产精品入口免费视| 久久久免费精品视频| 欧美成人sm免费视频| 法国裸体一区二区| 国产精品一区二区电影| 亚洲精品国产品国语在线| 国产精品一区二区性色av| 中文字幕日韩免费视频| 美女精品视频一区| 一区二区在线视频播放| 国产a级全部精品| 最新日韩中文字幕| 欧美日韩在线看| 亚洲女人天堂色在线7777| 日韩欧美在线国产| 一本色道久久88亚洲综合88| 国产欧美精品一区二区| 成人午夜在线影院| 国产成人中文字幕| 亚洲激情自拍图| 欧美久久精品一级黑人c片| 中文字幕亚洲色图| 岛国av一区二区在线在线观看| 日韩在线观看免费高清| 日韩av三级在线观看| 久久伊人色综合| 日本欧美中文字幕| 亚洲欧美自拍一区| 久久免费成人精品视频| 亚洲成人免费在线视频| 久久久精品免费视频| 国产精品亚洲美女av网站| 成人激情视频在线观看| 日韩精品极品毛片系列视频| 国产日产欧美精品| 精品av在线播放| 久久久久免费精品国产| 精品五月天久久| 色噜噜狠狠色综合网图区| 国产精品男人爽免费视频1| 欧美尺度大的性做爰视频| 狠狠色狠色综合曰曰| 欧美黑人巨大精品一区二区| 日韩av手机在线| 懂色av一区二区三区| 国产性色av一区二区| 国产精品av在线播放| 91热精品视频| 91精品国产综合久久香蕉的用户体验| 中文字幕欧美精品日韩中文字幕| 欧美高清性猛交| 精品久久久av| 中文字幕在线看视频国产欧美在线看完整| 91丝袜美腿美女视频网站| 5566成人精品视频免费| 欧美日韩中文字幕在线视频| 久久久久中文字幕| 国产成人精品免费久久久久| 亚洲区免费影片| 136fldh精品导航福利| 国产日韩精品视频| 激情久久av一区av二区av三区| 最新的欧美黄色| 欧美国产在线电影| 亚洲国产中文字幕在线观看| 欧美性猛交xxxx偷拍洗澡|