成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Lua中的一些常用函數(shù)庫實(shí)例講解

Lua中的一些常用函數(shù)庫實(shí)例講解

熱門標(biāo)簽:武漢百應(yīng)人工智能電銷機(jī)器人 百度地圖標(biāo)注位置網(wǎng)站 智能語音電銷的機(jī)器人 開通400電話申請流程 上海企業(yè)外呼系統(tǒng)排名 揚(yáng)州電銷外呼系統(tǒng)軟件 如何利用高德地圖標(biāo)注家 400手機(jī)電話免費(fèi)辦理 電腦外呼系統(tǒng)輻射大嗎

前言

這篇文章將會來一些比較輕松的內(nèi)容,就是簡單的介紹一下Lua中幾個常用的庫。簡單的說就是幾個API的介紹。所以說,看起來比較容易,也沒有多大的分量。就是純粹的總結(jié)。使用庫就是為了方便我們的開發(fā),提高開發(fā)效率,同時也能保證代碼的質(zhì)量。希望大家以后也不要重復(fù)造輪子了。

數(shù)學(xué)庫

數(shù)學(xué)庫(math)由一組標(biāo)準(zhǔn)的數(shù)學(xué)函數(shù)構(gòu)成。這里主要介紹幾個常用的函數(shù),其它的大家可以自行百度解決。

三角函數(shù)(sin,cos,tan……)

所有的三角函數(shù)都使用弧度單位,可以用函數(shù)deg(角度)和rad(弧度)來轉(zhuǎn)換角度和弧度。示例代碼:

復(fù)制代碼 代碼如下:

print(math.sin(math.rad(30))) -- 0.5

謹(jǐn)記:三角函數(shù)的參數(shù)都是弧度,在實(shí)際使用中不要忘了,是弧度。

取整函數(shù)(floor,ceil)

floor:返回不大于x的最大整數(shù);向下取整;
ceil:返回不小于x的最大整數(shù);向上取整。示例代碼:

復(fù)制代碼 代碼如下:

print(math.floor(5.6)) -- 5
print(math.ceil(5.6)) -- 6

最大值和最小值(max,min)

max:取參數(shù)中的最大值;
min:取參數(shù)中的最小值。示例代碼:

復(fù)制代碼 代碼如下:

print(math.max(2, 3, 2, 14, 2, 30, -3)) -- 30
print(math.min(2, 3, 2, 14, 2, 30, -3)) -- -3

生成偽隨機(jī)數(shù)的函數(shù)(random,randomseed)

在實(shí)際開發(fā)中,生成隨機(jī)數(shù)的需求是經(jīng)常有的。使用random和randomseed這兩個函數(shù)就可以輕易的完成。math.random用于生成偽隨機(jī)數(shù),可以用3種方式來調(diào)用它:
(1)如果在調(diào)用時不提供任何參數(shù),它將返回一個在區(qū)間[0, 1)內(nèi)均勻分布的偽隨機(jī)實(shí)數(shù);
(2)如果提供了一個整數(shù)n作為參數(shù),它將返回一個在區(qū)間[1, n]內(nèi)的偽隨機(jī)整數(shù);
(3)如果提供了兩個整數(shù)參數(shù)m和n,它將返回一個在區(qū)間[m, n]內(nèi)的偽隨機(jī)整數(shù)。
示例代碼如下:

復(fù)制代碼 代碼如下:

print(math.random()) -- 輸出一個大于等于0,小于1的值
print(math.random(2)) -- 輸出不是1就是2
print(math.random(3, 4)) -- 輸出不是3就是4

如果你按照上面的代碼運(yùn)行,然后再看著我寫的注釋,你可能就要罵我了,什么破注釋了,明顯就是錯的么?每次運(yùn)行的輸出結(jié)果都是一樣的。是的,結(jié)果是一樣的,這就要說到即將出場的math.randomseed。函數(shù)math.randomseed用于設(shè)置偽隨機(jī)數(shù)生成器的種子數(shù)。(看到這里,我姑且認(rèn)為你是已經(jīng)有過一年編程經(jīng)驗(yàn)的人員了,所以,你就不要問我什么是種子了,這種概念性的東西,我想百度百科或者維基百科比我更有指導(dǎo)意義)math.randomseed的唯一參數(shù)就是一個我們稱為種子數(shù)的值。一般我們的做法是在一個程序啟動時,用一個固定的種子數(shù)來調(diào)用它,以此初始化偽隨機(jī)數(shù)生成器。那么如何設(shè)置這個math.randomseed的種子值呢?如果使用同一個種子值的話,每次得到的隨機(jī)數(shù)就會是一樣的,在實(shí)際開發(fā)中,一般都是使用當(dāng)前時間作為種子值,比如:

復(fù)制代碼 代碼如下:

math.randomseed(os.time())

這樣就好了。一般在我們的程序啟動時,初始化一次種子就足夠了。我曾經(jīng)傻傻的在一個循環(huán)中,使用math.random取隨機(jī)數(shù),每次都調(diào)用math.randomseed(os.time())設(shè)置種子值(為什么不可以?你可以自己試一試,看看結(jié)果。如果不懂,留下你的迷惑,我們繼續(xù)交流)。
復(fù)制代碼 代碼如下:

math.randomseed(os.time())
print(math.random()) -- 輸出一個大于等于0,小于1的值
print(math.random(2)) -- 輸出不是1就是2
print(math.random(3, 4)) -- 輸出不是3就是4

這樣就好了,運(yùn)行一下,看看結(jié)果吧。

table庫

table庫是由一些輔助函數(shù)構(gòu)成的,這些函數(shù)將table作為數(shù)組來操作(重點(diǎn):作為數(shù)組來操作的)。

插入和刪除函數(shù)

table.insert用于將一個元素插入到一個數(shù)組的指定位置,它會移動后續(xù)元素以空出空間。如果在調(diào)用table.insert時沒有指定位置參數(shù),則會將元素添加到數(shù)組末尾。示例代碼:

復(fù)制代碼 代碼如下:

local tb = {10, 20, 30}
table.insert(tb, 40) -- 在table的最后插入,結(jié)果為:{10, 20, 30, 40}
table.insert(tb, 2, 15) -- 在table的位置2插入,結(jié)果為:{10, 15, 20, 30, 40}

函數(shù)table.remove會刪除并返回?cái)?shù)組指定位置上的元素,并將該位置之后的所有元素前移,以填補(bǔ)空缺。如果在調(diào)用這個函數(shù)時不指定位置參數(shù),它就會刪除數(shù)組的最后一個元素。示例代碼:
復(fù)制代碼 代碼如下:

local tb = {10, 20, 30}
print(table.remove(tb)) -- 刪除最后一個元素,并返回30;最后,tb = {10, 20}
print(table.remove(tb, 1)) -- 刪除第一個元素并返回10;最后,tb = {20}

現(xiàn)在有了這兩個操作,實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)中的堆棧那就輕而易舉了。等什么?自己試一試吧。

排序

對數(shù)組進(jìn)行排序,這種需求,在實(shí)際開發(fā)中那是100%會遇到的。所以了,不會使用Lua對數(shù)組進(jìn)行排序,那是會被別人笑掉大牙的。廢話少說。在Lua中,我們可以用table.sort完成這個任務(wù)。它可以對一個數(shù)組進(jìn)行排序,還可以指定一個可選的次序函數(shù)。這個次序函數(shù)有兩個參數(shù),如果希望第一個參數(shù)在排序結(jié)果中位于第二個參數(shù)值前,就應(yīng)當(dāng)返回true;如果沒有提供這個函數(shù),table.sort就使用默認(rèn)的小于操作。實(shí)例代碼:

復(fù)制代碼 代碼如下:

local tb = {20, 10, 2, 3, 4, 89, 20, 33, 2, 3}
 
-- 默認(rèn)是升序排序
table.sort(tb)
for _, v in ipairs(tb) do
    print(v)
end
 
print("=======")
 
-- 修改為降序排序
table.sort(tb, function (a, b) if a > b then return true end end)
for _, v in ipairs(tb) do
    print(v)
end

但是,在實(shí)際開發(fā)中,我們經(jīng)常犯這樣的錯誤,總是試圖對一個table的索引進(jìn)行排序。在table中,索引是一個無序的集合。如果對它們進(jìn)行排序,則必須將它們復(fù)制到一個數(shù)組中,然后對這個數(shù)組進(jìn)行排序。這就是我為什么一開始強(qiáng)調(diào)的,table庫是對數(shù)組進(jìn)行操作的。示例代碼:
復(fù)制代碼 代碼如下:

local tb = {x = 20, z = 10, y = 30, m = 2, n = 8} -- 這是一個key無序的table
-- 如果想按照key的升序排列,下列代碼是不起作用的
table.sort(tb)
for k, v in pairs(tb) do
    print(k .. " = " .. v)
end

正確做法是將這個table的所有key放入到一個數(shù)組中,對這個數(shù)組進(jìn)行排序。示例代碼:
復(fù)制代碼 代碼如下:

local tb = {x = 20, z = 10, y = 30, m = 2, n = 8} -- 這是一個key無序的table
 
local keyTb = {}
for k, _ in pairs(tb) do
    keyTb[#keyTb + 1] = k
end
 
table.sort(keyTb)
 
for _, v in ipairs(keyTb) do
    print(v .. " = " .. tb[v])
end

現(xiàn)在就是按照key的升序排列了。

連接

使用table.concat可以完成數(shù)組的連接。它接受一個字符串?dāng)?shù)組,并返回這些字符串連接后的結(jié)果,它有一個可選參數(shù),用于指定插到字符串之間的分隔符,同時這個函數(shù)另外還接受兩個可選參數(shù),用于指定第一個和最后一個要連接的字符串索引。示例代碼:

復(fù)制代碼 代碼如下:

local tb = {"Jelly", "Think", "Is", "Good"}
local strTb = table.concat(tb, " ")
print(strTb)

字符串庫

重點(diǎn)來了,學(xué)習(xí)每種語言,在實(shí)際工作時,我們總是在和字符串進(jìn)行打交道。Lua也不例外,在Lua中真正的字符串操作能力來源于字符串庫,字符串庫中的所有函數(shù)都導(dǎo)出在模塊string中?,F(xiàn)在就來對string庫進(jìn)行總結(jié)。

基礎(chǔ)字符串函數(shù)

直接通過代碼來說吧,示例代碼:

復(fù)制代碼 代碼如下:

local str = "Jelly Think"
 
-- string.len可以獲得字符串的長度
local len = string.len(str)
print(len) -- 11
 
-- string.rep返回字符串重復(fù)n次的結(jié)果
str = "ab"
local newStr = string.rep(str, 2) -- 重復(fù)兩次
print(newStr) -- abab
 
-- string.lower將字符串小寫變成大寫形式,并返回一個改變以后的副本
str = "Jelly Think"
newStr = string.lower(str)
print(newStr) -- jelly think
 
-- string.upper將字符串大寫變成小寫形式,并返回一個改變以后的副本
newStr = string.upper(str)
print(newStr) -- JELLY THINK

這里重點(diǎn)介紹一下string.sub(s, i, j)函數(shù),它可以從字符串s中提取第i個到第j個字符。在Lua中,字符串的第一個字符的索引是1,但是,索引也可以是負(fù)數(shù),表示從字符串的尾部開始計(jì)數(shù),索引-1代表字符串的最后一個字符,以此類推。
復(fù)制代碼 代碼如下:

local str = "[Jelly Think]"
local newStr = string.sub(str, 2, -2)
print(newStr) -- Jelly Think
newStr = string.sub(str, 2, 6)
print(newStr) -- Jelly

(重點(diǎn):在Lua中,字符串和其它語言的一樣,是不可變的,以上的操作,都會返回一個新的值,但并不會修改原來的字符串。謹(jǐn)記,謹(jǐn)記?。。。?br /> 函數(shù)string.char和函數(shù)string.byte用于轉(zhuǎn)換字符及其內(nèi)部數(shù)值表示;string.char函數(shù)接受零個或多個整數(shù),并將每個整數(shù)轉(zhuǎn)換成對應(yīng)的字符,然后返回一個由這些字符連接而成的字符串。string.byte(s, i)返回字符串s中第i個字符的內(nèi)部數(shù)值表示,它的第二個參數(shù)是可選的,調(diào)用string.byte(s)可返回字符串s中第一個字符的內(nèi)部數(shù)值表示。示例代碼:
復(fù)制代碼 代碼如下:

print(string.char(97)) -- a
 
local i = 98
print(string.char(i, i + 1, i + 2)) -- bcd
 
print(string.byte("abc")) -- 97
print(string.byte("abc", 2)) -- 98
print(string.byte("abc", 2, 3)) -- 98 99
print(string.byte("abc", -1)) -- 99

在Lua中也有一個神奇的函數(shù),string.format。和C語言中的printf是一致的。之所以說它神奇,因?yàn)樗玫奶嗔耍蔡糜昧?。以至于我這里就不多廢話了,我相信你們都會的。

模式匹配

由于模式匹配的東西比較多,所以,準(zhǔn)備單獨(dú)寫篇博文單獨(dú)總結(jié)。

I/O庫

I/O庫為文件操作提供了兩種不同的模型,簡單模型和完整模型。簡單模型假設(shè)有一個當(dāng)前輸入文件和一個當(dāng)前輸出文件,它的I/O操作均作用于這些文件。完整模型則使用顯式地文件句柄。它采用了面向?qū)ο蟮娘L(fēng)格,并將所有的操作定義為文件句柄上的方法。

簡單I/O模型

簡單模型的所有操作都作用于兩個當(dāng)前文件。I/O庫將當(dāng)前輸入文件初始化為進(jìn)程標(biāo)準(zhǔn)輸入(stdin),將當(dāng)前輸出文件初始化為進(jìn)程標(biāo)準(zhǔn)輸出。在執(zhí)行io.read()操作時,就會從標(biāo)準(zhǔn)輸入中讀取一行。

用函數(shù)io.input和io.output可以改變這兩個當(dāng)前文件。io.input(filename)調(diào)用會以只讀模式打開指定的文件,并將其設(shè)定為當(dāng)前輸入文件;除非再次調(diào)用io.input,否則所有的輸入都將來源于這個文件;在輸出方面,io.output也可以完成類似的工作。說完了input和output,在來聊聊io.write和io.read。

io.write接受任意數(shù)量的字符串參數(shù),并將它們寫入當(dāng)前輸出文件;它也可以接受數(shù)字參數(shù),數(shù)字參數(shù)會根據(jù)常規(guī)的轉(zhuǎn)換規(guī)則轉(zhuǎn)換為字符串。如果希望有更多的控制,可以使用string.format進(jìn)行控制。函數(shù)io.read從當(dāng)前輸入文件中讀取字符串,它的參數(shù)決定了要讀取的數(shù)據(jù):

“*all” 讀取整個文件
“*line” 讀取下一行
“*number” 讀取一個數(shù)字
num> 讀取一個不超過num>個字符的字符串

直接看一段示例代碼吧:

復(fù)制代碼 代碼如下:

-- 先建立input.txt和output.txt兩個文件
-- 在input.txt文件中寫入以下內(nèi)容:
--[[
https://www.jb51.net
果凍想 | 一個原創(chuàng)文章分享網(wǎng)站
88
--]]
io.input("input.txt") -- 從input.txt文件中讀取
io.output("output.txt") -- 寫入到output.txt文件
 
-- 向input.txt寫入一些測試數(shù)據(jù)
io.write("JellyThink", "\n")
io.write("果凍想", "\n")
io.write("https://www.jb51.net", "\n")
io.write(88)

讀取一整個文件的示例代碼:

復(fù)制代碼 代碼如下:

str = io.read("*all") -- 讀取所有
--[[
print(str)
https://www.jb51.net
果凍想 | 一個原創(chuàng)文章分享網(wǎng)站
88
--]]
print(str)

每次讀取一行的示例代碼:

復(fù)制代碼 代碼如下:

-- 用來判斷是否已經(jīng)讀到了文件末尾
-- 如果已經(jīng)到了末尾,就返回nil;否則返回空字符串
local mark = io.read(0)
while mark do
    print(io.read("*line"))
    mark = io.read(0)
    if not mark then
        print("File end.")
        break
    end
end

完整I/O模型

簡單I/O功能太受限了,以至于基本沒有什么用處,而用的更多的則是這里說的完整I/O模型。完整I/O模型可以進(jìn)行更多的I/O控制,它是基于文件句柄的,就好比與C語言中的FILE*,表示一個正在操作的文件。

要打開一個文件,可以使用io.open函數(shù),它有兩個參數(shù),一個表示要打開的文件名,另一個表示操作的模式字符串。模式字符串可以有以下四種取值方式:

(1)”r”:以讀取方式打開文件;只能對文件進(jìn)行讀取操作;
(2)”w”:以寫入方式打開文件;可以對文件進(jìn)行寫入操作,但是會覆蓋文件原有內(nèi)容;
(3)”a”:以追加方式打開文件;可以對文件進(jìn)行寫入操作;會在原來文件的基礎(chǔ)在,進(jìn)行追加寫入;
(4)”b”:表示打開二進(jìn)制文件,這種模式一般都是和前面三種混合使用,比如:”rb”,”wb”。

open函數(shù)會返回表示文件的一個句柄;如果發(fā)生錯誤,就返回nil,一條錯誤消息和一個錯誤代碼。示例代碼:

復(fù)制代碼 代碼如下:

-- 訪問一個不存在的文件
print(io.open("ooxx.txt", r))
--[[
輸出以下內(nèi)容:
nil    ooxx.txt: No such file or directory    2
--]]

當(dāng)成功打開一個文件以后,就可以使用read/write方法讀寫文件了,這與read/write函數(shù)相似,但是需要用冒號語法,將它們作為文件句柄的方法來調(diào)用,示例代碼:

復(fù)制代碼 代碼如下:

local hFile = io.open("input.txt", r)
if hFile then
    local strContent = hFile:read("*all")
    --local strContent = hFile.read(hFile, "*all") 你也可以使用這種方法
    print(strContent)
end

我們也可以將完整I/O模式與簡單I/O模式混合使用。通過不指定參數(shù)調(diào)用io.input(),可以得到當(dāng)前輸入文件的句柄;而通過io.input(handle),可以設(shè)置當(dāng)前輸入文件的句柄,比如,需要臨時改變當(dāng)前輸入文件,可以這樣做:
復(fù)制代碼 代碼如下:

-- io.input()不傳入?yún)?shù)時,獲取當(dāng)前的輸入文件句柄
local hCurrent = io.input()
 
-- 打開一個新的文件
io.input("input.txt")
 
-- 在新的文件上進(jìn)行操作
local strContent = io.read("*all")
print(strContent)
 
-- 關(guān)閉當(dāng)前文件
io.input():close()
 
-- 操作完成以后,恢復(fù)到以前的狀態(tài)
io.input(hCurrent)

其它文件操作

函數(shù)tmpfile返回一個臨時文件的句柄,這個句柄是以讀/寫方式打開;這個文件會在程序結(jié)束時自動刪除。我們在使用時,可以直接io.tmpfile()就ok了。
函數(shù)flush會將緩沖區(qū)中數(shù)據(jù)寫入文件,它與write函數(shù)一樣,將其作為一個函數(shù)調(diào)用時,io.flush()會刷新當(dāng)前輸出文件;而將其作為一個方法調(diào)用時,f:flush()會刷新某個特定的文件f。

函數(shù)seek可以獲取和設(shè)置一個文件的當(dāng)前位置。它的一般形式是f:seek(whence, offset),其參數(shù)的具體含義如下:

(1)whence取值set,offset表示為相對于文件起始的偏移量;
(2)whence取值cur,offset表示為相對于當(dāng)前位置的偏移量;
(3)whence取值end,offset表示為相對于文件末尾的偏移量。

函數(shù)的返回值與whence無關(guān),它總是返回文件的當(dāng)前位置,即相對于文件起始處的偏移字節(jié)數(shù)。根據(jù)上述的描述,來一小段示例代碼:

復(fù)制代碼 代碼如下:

function GetFileSize(hFile)
    local currentPos = hFile:seek() -- 獲取當(dāng)前位置
    local size = file:seek("end") -- 獲取文件大小
    file:seek("set", currentPos)
    return size
end

操作系統(tǒng)函數(shù)

操作系統(tǒng)庫定義在table os中,其中包含了文件操作函數(shù)、獲取當(dāng)前日期和時間的函數(shù)。為了保證Lua的可移植性,所以對于文件庫來說,就比較簡單,它只包含兩個函數(shù):

用于文件改名的os.rename函數(shù);
用于刪除文件的os.remove函數(shù)。

但是對于獲取日期和時間的函數(shù),還是有必要花費(fèi)一點(diǎn)時間總結(jié)一下的。

日期與時間

在Lua庫中提供了兩個非常重要的日期和時間函數(shù),分別是time和date。那就先從time函數(shù)開始。

time

如果不帶任何參數(shù)調(diào)用time函數(shù),它會以數(shù)字形式返回當(dāng)前的日期和時間。返回的數(shù)值表示當(dāng)前時間到某個特定時間的秒數(shù),在不同的系統(tǒng)上,這個特定的時間是不一樣的。如果用一個table作為參數(shù)調(diào)用它,它會返回一個數(shù)字,表示該table中所描述的日期和時間。這種table具有以下有效字段:

year 一個完整的年份
month 01-12
day 01-31
hour 00-23
min 00-59
sec 00-59
isdst 一個布爾值,true表示夏令時

前三個字段是必須要有的,比如:

復(fù)制代碼 代碼如下:

print(os.time()) -- 輸出當(dāng)前時間的描述
print(os.time({year=2014,month=8,day=14}))

date

函數(shù)date是time的一個反函數(shù),它可以將一個表示日期和時間的數(shù)字轉(zhuǎn)換成某些高級的表現(xiàn)形式。其第一個參數(shù)是格式字符串,指定了期望的表示形式;第二個參數(shù)是日期和時間的數(shù)字,默認(rèn)為當(dāng)前日期和時間。例如:

復(fù)制代碼 代碼如下:

local tbCurrentTime = os.date("*t")
 
for k, v in pairs(tbCurrentTime) do
    print(k .. "=" .. tostring(v))
end

這樣就會輸出當(dāng)天的時間,你運(yùn)行以下代碼看看。其實(shí)data函數(shù)沒有多少需要說的。只是data函數(shù)的第一個參數(shù)的格式種類是非常多的,可以去百度一下。我一般用一個*t就夠了。但是了解一下其它的也還不錯。

對于這里說到的time和date兩個函數(shù),一般time函數(shù)返回的描述不適合人去讀,我們一般都是保存這個數(shù)字,在后臺進(jìn)行處理;對于date函數(shù),它返回的內(nèi)容適合人去讀,所以,一般使用date返回的數(shù)據(jù)在UI上顯示。

總結(jié)

對于任何語言來說,一個標(biāo)準(zhǔn)庫都是一個非常龐大的東西,Lua也是這樣,所以這篇文章寫的也比較長。抱歉,這只是第一部分,后面還有第二部分。所以呢,大家還是將就著看吧。雖然深的東西沒有多少,但是這也是我們?nèi)腴T一門語言的必經(jīng)之路。少年們,努力吧。

您可能感興趣的文章:
  • Lua中os庫詳細(xì)介紹
  • Lua中的常用函數(shù)庫匯總
  • Lua中的數(shù)學(xué)庫總結(jié)
  • 簡介Lua腳本與Redis數(shù)據(jù)庫的結(jié)合使用
  • Lua教程(十六):系統(tǒng)庫(os庫)
  • Nginx+lua 實(shí)現(xiàn)調(diào)用.so文件

標(biāo)簽:黑龍江 宜賓 張掖 延邊 武漢 江西 新余 嘉峪關(guān)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua中的一些常用函數(shù)庫實(shí)例講解》,本文關(guān)鍵詞  Lua,中的,一些,常用,函數(shù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua中的一些常用函數(shù)庫實(shí)例講解》相關(guān)的同類信息!
  • 本頁收集關(guān)于Lua中的一些常用函數(shù)庫實(shí)例講解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    一区二区三区欧美日韩| 国产97色在线| 最新中文字幕在线播放| 成人免费视频在线观看超级碰| 亚洲精品一区三区三区在线观看| 一区二区三区激情视频| 大胆国模一区二区三区| 日本久久二区| 国产精品午夜久久久久久| 福利电影一区二区| 国产伦一区二区| 一区二区三区四区久久| 日韩福利视频导航| 日韩久久久久久久久久久久久| 黄色高清视频在线观看| 成人小视频在线观看| 性欧美xxxx免费岛国不卡电影| 尤物yw193can在线观看| 玛丽玛丽电影原版免费观看1977| 91最新网址| 久久久亚洲综合| 男人在线观看视频| 国产又黄又爽又色| 午夜影视一区二区三区| 超碰在线公开超碰在线| 国产999精品在线观看| 色狠狠综合天天综合综合| 精品一区二区在线观看| 六月婷婷在线视频| av观看网址| 国产女人水真多18毛片18精品| 蜜桃91麻豆精品一二三区| 亚洲国产欧美另类丝袜| 天天干天天操天天做| 蜜乳av一区二区| 暖暖影院日本高清...免费| 国产伦精品一区二区三区免.费| 久久国产成人| 欧美裸体在线版观看完整版| 成人午夜av| 国产精品免费人成网站酒店| 特黄三级视频| 一区二区三区不卡在线| 女人天堂在线视频| 日本在线视频网址| 亚洲电影一级黄| a天堂中文在线观看| 成人女保姆的销魂服务| 再深点灬舒服灬太大了添少妇视频| 国自产拍偷拍精品啪啪一区二区| 国产精品久久中文| 亚洲第一成人av| 国产黄色片大全| 隔壁老王国产在线精品| 国产精品人成在线观看免费| 精品久久久久久久久久久久久| 日韩亚洲色图| 亚洲色图图片| 欧美高清69hd| 国产精品suv一区二区88| 999国内精品视频在线| 亚洲第一区中文99精品| 国产一区二区三区的电影| 成人亚洲欧美日韩在线观看| 国产精品一区二区三区久久| 亚洲图片在线观看| 成人av网站在线观看免费| 欧美日韩综合色| 加勒比在线一区| 久久精品视频在线免费观看| 国内精品国产三级国产aⅴ久| 免费成人深夜夜行p站| 欧美xxxxbbbb在线播放| 综合久久亚洲| 欧美精品一区二区久久久| 色诱视频网站一区| 亚洲色图第四色| 另类色图亚洲色图| 日韩电影中文字幕一区| 欧美日韩在线观看视频小说| 亚洲精品国产精品国自产| 中文字幕一区二区三区精彩视频| 久久久久久久久久久黄色| 日韩欧美中文字幕制服| 亚洲欧美国产高清| 国产日韩欧美综合一区| 日韩经典中文字幕| 亚洲图片小说在线| 在线观看国产区| 青草热久免费精品视频| 欧美日韩1区2区| 色999日韩欧美国产| 亚洲 国产 欧美一区| 亚洲主播在线观看| 久久一区二区精品| 精品国产日韩欧美| 亚洲第一福利视频在线| 国产午夜精品无码一区二区| 成人午夜免费视频| 久久精品第一页| 欧美香蕉爽爽人人爽| 98精品在线视频| 国产精品正在播放| www.久久久久久久久| 麻豆久久久久久| 欧美日韩爆操| 日本中文字幕高清视频| 在线观看视频亚洲| 欧美 日韩 成人| 欧美日韩一区二区三区不卡视频| 午夜视频在线播放| sm性调教片在线观看| 久久看人人爽人人| 亚洲一级av毛片| 99亚洲国产精品| 成年免费视频| 久久一区二区三区四区五区| 男人天堂av电影| 国内精品久久久久国产盗摄免费观看完整版| 亚洲精品卡一卡二| 2018日韩中文字幕| 国产美女扒开尿口久久久| 在线播放亚洲精品| 国产91精品入口17c| 国产精品尤物视频| 一区二区三区视频免费在线观看| 凸凹人妻人人澡人人添| 亚洲一区二区三区四区五区中文| 国产电影一区二区三区| 国产精品igao| 91精品在线免费| 国产专区自拍| 一本色道久久亚洲综合精品蜜桃| 免费看一级一片| 中日韩高清电影网| 99久热这里只有精品视频免费观看| 无码人妻精品一区二区中文| 精品视频一区二区在线观看| 国产一区二区三区免费观看在线| av电影高清在线观看| 国产91综合一区在线观看| 精品国产aⅴ麻豆| 高清全集视频免费在线| aaaa欧美| xxxx视频在线观看| 在线观看日韩www视频免费| 中文字幕5566| 国产乱码字幕精品高清av| 久久r这里只有精品| 免费欧美在线视频| 天天干天天干天天干天天| 日本大胆欧美人术艺术动态| 一本一道久久a久久综合蜜桃| 九九久久九九久久| 高清国语自产在线观看| 国产拍在线视频| 色丁香久综合在线久综合在线观看| 一级黄色av片| 欧美日韩免费一区| 先锋a资源在线看亚洲| 亚洲伦理中文字幕| 97碰在线观看| 成人精品在线| 99久久夜色精品国产亚洲狼| 91动漫在线看| www.eeuss影院| 国产日韩精品在线播放| 日本免费在线视频观看| 亚洲欧美视频在线观看| 久久综合色婷婷| 亚洲第一网站在线观看| 亚洲成人激情在线| av亚洲精华国产精华| 嫩模一区二区三区| 国产精品亚洲欧美| 欧美日韩精品中文字幕| 日韩在线免费| 粉嫩高清一区二区三区精品视频| 激情图片在线观看高清国产| 久久亚洲AV无码专区成人国产| 精品一区二区免费在线观看| 国产一区二区三区在线视频观看| 欧美黑人疯狂性受xxxxx野外| 美女航空一级毛片在线播放| 亚洲欧美日韩精品久久亚洲区| 色九视频91| 久久久免费视频网站| 亚洲a成人v| 日韩dvd碟片| 国产成+人+综合+亚洲欧洲| 日韩中文字幕精品视频| xfplay先锋影音夜色资源站| 神马电影久久| 欧美日韩久久中文字幕| 天天色天天操天天做| 艳妇臀荡乳欲伦亚洲一区| 一区二区三区免费观看视频| 中文字幕在线看视频国产欧美| 成人精品一区二区三区四区| 黄网视频在线观看| 欧美国产一区视频在线观看| 国产毛片毛片毛片毛片| 日韩专区av| 国产91精品一区| 91最新国产视频| 亚洲综合中文字幕在线| 国产盗摄在线视频网站| 亚洲大片在线观看| 在线欧美一级视频| 亚洲美女视频网站| 日韩有码在线观看| 久久精品成人欧美大片免费| 精品国产第一国产综合精品| 亚洲视频axxx| 亚洲综合伊人久久大杳蕉| 欧美黄色aaaa| 国产aⅴ精品一区二区四区| 欧美电影在线观看网站| 中文字幕视频在线免费欧美日韩综合在线看| gai在线观看免费高清| 国产免费无码一区二区| 欧洲黄色一区| 久久福利一区二区| 精品久久久久久最新网址| 精品日本一区二区三区在线观看| 国产亚洲在线播放| 国产国语**毛片高清视频| 水蜜桃久久夜色精品一区| 中文国产成人精品久久一| 日本泡妞xxxx免费视频软件| 搡的我好爽在线观看免费视频| 国产精品久久久国产盗摄| 国内精品露脸在线视频播放| 欧美三级自拍| 国内少妇毛片视频| 国内老熟妇对白hdxxxx| www.狠狠色.com| 开心婷婷激情| 免费精品国产自产拍在| 成人免费视频97| 久久这里只有精品18| 伊人资源视频在线| 欧美丰满一区二区免费视频| 久久久之久亚州精品露出| 91亚洲精品在线| 性欧美freesex顶级少妇| 美媛馆国产精品一区二区| 另类欧美日韩国产在线| 1区2区3区国产精品| 一道精品一区二区三区| 国产精品一区二区三区四| 超碰免费在线播放| 国产精品久久久网站| 在线日本视频| 精品国产欧美成人夜夜嗨| 无限资源日本好片| 欧美在线视频网站| 邪恶网站在线观看| 多人啪嗒啪嗒在线观看免费| 久久国产午夜精品理论片最新版本| 不卡视频免费在线观看| 久久av资源站| 欧美黄色www| 免费国产h视频在线观看86| 岛国av免费观看| 亚洲精品在线免费看| 97超碰人人爽| а√天堂中文资源在线bt| 99re在线视频免费观看| 又紧又大又爽精品一区二区| 中文字幕不卡av| 成人久久精品人妻一区二区三区| 伦一区二区三区中文字幕v亚洲| 欧洲精品一区| 国产成人av在线影院| 在线观看成人影院| 国产精品久久777777换脸| 亚洲专区**| 一区二区精品区| 91在线视频在线| 日韩一区二区三区免费播放| 久久久久久久波多野高潮日日| 亚洲第一视频在线| 欧美精品日韩精品| 国产无套丰满白嫩对白| 精品久久久三级丝袜| 国产在线欧美在线| 亚洲va码欧洲m码| 一二三四在线视频观看社区| 成人开心激情| 国产探花精品一区二区| 99久久久国产精品无码免费| 亚洲精品一二三区| 视频1区2区3区| 欧美人与禽性xxxxx杂性| 午夜不卡久久精品无码免费| 国产精品视频yy9299一区| 午夜伦理一区二区| 亚洲国产精品久久久久久久| 亚洲欧洲国产伦综合| 最新一区二区三区| 欧美久久久久久久久久久| 丁香六月激情婷婷| 国产精品人妻一区二区三区| 粉嫩av亚洲一区二区图片| 99精品视频在线看| 亚洲永久在线观看| 桃色av一区二区| 免费国产精品视频| jizz中国免费| 欧美日韩亚洲丝袜制服| 成年人午夜剧场| 国产精品高清一区二区| 夜夜爽视频导航| 国产乱淫av麻豆国产免费| 疯狂做受xxxx欧美肥白少妇| 久久久久久亚洲中文字幕无码| 亚洲黄色成人久久久| av片在线免费| 在线免费av导航| 日韩美女激情视频| 欧洲日本亚洲国产区| 九色在线观看| 一区二区91| 97精品国产97久久久久久| 欧美精品18+| 日韩欧美亚洲精品| 少妇高潮久久久|