精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Scala講座:函數(shù)式編程處理樹(shù)結(jié)構(gòu)數(shù)據(jù)

開(kāi)發(fā) 后端
本文繼續(xù)Scala講座第七篇的第四部分內(nèi)容,本部分提供了函數(shù)式編程的比較高階一點(diǎn)的案例。

在學(xué)習(xí)完函數(shù)式編程的思考方法之后,嘗試一下更高級(jí)的例子吧。這次考慮一下處理類似于XML的樹(shù)結(jié)構(gòu)數(shù)據(jù)的程序。既不使用循環(huán)也不使用變量如何來(lái)描述復(fù)雜的處理呢?

先出一個(gè)處理XML數(shù)據(jù)的題目。例如有如下的XML數(shù)據(jù),有目錄和文件,目錄下有目錄和文件兩種元素。

  1. < xml> 
  2. < dir name="com"> 
  3. < dir name="mamezou"> 
  4. < file name="aaa.txt">< /file> 
  5. < file name="bbb.txt">< /file> 
  6. < /dir> 
  7. < file name="ccc.txt">< /file> 
  8. < /dir> 
  9. < file name="ddd.txt">< /file> 
  10. < /xml> 

題目的內(nèi)容是從中取出文件的部分,并打印出文件名。程序的執(zhí)行結(jié)果因該如下:

  1. file:aaa.txt  
  2. file:bbb.txt  
  3. file:ccc.txt  
  4. file:ddd.txt 

好,會(huì)變成怎樣的程序呢?另外,Scala有非常強(qiáng)大的XML處理功能,以上的功能實(shí)際上只要一兩行程序就可以完成了。但是這次為了說(shuō)明函數(shù)式編程,特地不使用哪些功能,而使用簡(jiǎn)單功能來(lái)從頭開(kāi)始編碼。

Scala中XML語(yǔ)句可以作為語(yǔ)言文本(Literal)像數(shù)字和字符串一樣被處理。像下面這樣

  1. scala> val xml = < xml> 
  2. < dir name="com"> 
  3. < dir name="mamezou"> 
  4. < file name="aaa.txt">< /file> 
  5. < file name="bbb.txt">< /file> 
  6. < /dir> 
  7. < file name="ccc.txt">< /file> 
  8. < /dir> 
  9. < file name="ddd.txt">< /file> 
  10. < /xml> 
  11. xml: scala.xml.Elem =  
  12. < xml> 
  13. < dir name="com"> 
  14. :(以下略) 

沒(méi)有雙引號(hào),一開(kāi)始就寫(xiě)XML文本,然后將其賦值給變量(這里是xml)。他的類型是scala.xml.Elem,父類型為scala.xml.Node,表示XML的標(biāo)記。在這里包含在< xml>< /xml>標(biāo)記對(duì)中的內(nèi)容被綁定在變量xml上。該Node類型里有名為child的方法,返回該標(biāo)記的所有子元素。例如,這里xml.child將返回以如下兩個(gè)標(biāo)記為成員的類似于ArrayBuffer的數(shù)組對(duì)象。

  1. < dir name="com"> 
  2. :  
  3. < /dir> 

  1. < file name="ddd.txt"/> 

這里可以認(rèn)為ArrayBuffer是列表一樣的東西。進(jìn)一步調(diào)用子元素的child方法則可以得到再下一層的元素。調(diào)用。< dir name="com">標(biāo)簽對(duì)象的child方法將返回緊鄰該標(biāo)簽的子元素(目錄標(biāo)記)。

僅使用這個(gè)方法該如何寫(xiě)取得文件名的程序呢?如果是面向?qū)ο蠓绞剑瑒t可以首先定義Dir類和File類,然后定義Dir和File類的抽象父類Node,然后沿著樹(shù)結(jié)構(gòu)定義showFiles方法,然后遞歸調(diào)用該方法來(lái)取得文件名。也就是所謂的組合模式(圖1)。

Scala講座 圖1:組合模式 

Scala講座 圖1:組合模式

如果放棄面向?qū)ο蠖紤]純粹的命令式方法的話就會(huì)很頭疼了。因?yàn)橹挥胒or語(yǔ)句的話,對(duì)于每一個(gè)Dir都要用一個(gè)for循環(huán),層次一多將會(huì)將會(huì)變得很復(fù)雜,這里省略了命令式方法的實(shí)現(xiàn)。

接下來(lái)用函數(shù)式方法來(lái)考慮一下。函數(shù)式的情況下,因?yàn)榭紤]的是對(duì)于各個(gè)元素應(yīng)用函數(shù),先從***元素開(kāi)始考慮應(yīng)用什么函數(shù)。這個(gè)函數(shù)功能是“在某一時(shí)刻返回某一元素下的文件列表”。這樣就可以想到,那元素如果是file則可直接返回包含該file的列表,如果是Dir的話則返回包含所有子文件的列表。先來(lái)看看該函數(shù)的實(shí)例。

  1. def fileFinder(node:scala.xml.Node):List[scala.xml.Node] = node.label match {  
  2. case "xml" => node.child.toList.flatMap(fileFinder)  
  3. case "dir" => node.child.toList.flatMap(fileFinder)  
  4. case "file" => List(node)  
  5. case _ => List()  

其中toList()方法為將類列表對(duì)象(ArrayBuffer)轉(zhuǎn)換為列表對(duì)象。剛才用的是類似于ArrayBuffer類的對(duì)象,這里將其轉(zhuǎn)換為標(biāo)準(zhǔn)列表后再操作,而node.label則返回XML標(biāo)記的名稱。

這里開(kāi)始是正題了,除了file和無(wú)匹配處理(case _ => List())部分,xml和dir處理部分是問(wèn)題的關(guān)鍵,也就是node.child.toList.flatMap(fileFinder)部分。如果這里關(guān)注的是Node對(duì)象,那處理過(guò)程因該是這樣的,首先用child方法取出Node的所有子元素,然后用前面說(shuō)明過(guò)的類似于map的函數(shù)對(duì)每一個(gè)子元素應(yīng)用fileFinder方法并遞歸重復(fù)這一過(guò)程。那為什么這樣編碼之后就能得到Node下的所有file元素了呢?

那么flatMap原本的功能又是什么呢?讓我們將其轉(zhuǎn)換成map函數(shù),然后看一下執(zhí)行過(guò)程。將XML的結(jié)構(gòu)簡(jiǎn)單化之后將如下所示

  1. < xml> ←這里  
  2. < dir> 
  3. < dir> 
  4. < file name="aaa.txt"/> 
  5. < file name="bbb.txt"/> 
  6. < /dir> 
  7. < file name="ccc.txt"/> 
  8. < /dir> 
  9. < file name="ddd.txt"/> 
  10. < /xml> 

假如現(xiàn)在的要素位置是xml標(biāo)記,將其子元素轉(zhuǎn)換成列表后對(duì)其各個(gè)項(xiàng)目應(yīng)用函數(shù)。

  1. List(fileFinder(< dir>~< /dir>), fileFinder(< file …/>)) 

file的話保持原樣,如果是dir則對(duì)其子元素應(yīng)用函數(shù)。

  1. List(List(fileFinder(< dir>~< /dir>),fileFinder(< file name="ccc.txt"/>)),List(< file name="ddd.txt">)) 

接著對(duì)于***個(gè)Node元素應(yīng)用函數(shù)。

  1. List(List(List(< file name="aaa.txt"/>,< file name="bbb.txt"/>), List(< file name="ccc.txt"/>)), List(< file name="ddd.txt">)) 

理解上述工作過(guò)程是比較困難的,重要的是在我的腦中考慮的并不是這樣復(fù)雜的邏輯,而僅僅是實(shí)現(xiàn)“從一個(gè)Node元素中取出file列表”的函數(shù)的邏輯。這需要一定程度的思路切換,考慮用命令式方法來(lái)實(shí)現(xiàn)時(shí)實(shí)際上花了我2-3小時(shí),而想到這個(gè)函數(shù)式方法后不到10分鐘就想通了。

感覺(jué)上好像已經(jīng)完成了,但是這還不夠。剛才用map來(lái)假想的過(guò)程完成后,得到的是List里面還有List的一個(gè)復(fù)合結(jié)構(gòu),光這樣還不能被使用。那么,flatMap函數(shù)就出場(chǎng)了。這個(gè)函數(shù)在Scala的機(jī)制上具有同map函數(shù)同等的重要層度,將map和flatMap說(shuō)成Scala函數(shù)機(jī)制的核心都不為過(guò)分。

“flatMap “函數(shù)對(duì)每一個(gè)元素應(yīng)用函數(shù)參數(shù)之后將其結(jié)果以列表形式返回,這時(shí)返回結(jié)果是列表類型是關(guān)鍵。接著看一下簡(jiǎn)單的例子吧

首先是map函數(shù)的例子。對(duì)于內(nèi)容為“1,2,3,4,5 “的列表,應(yīng)用x*2函數(shù)。

  1. scala> List(1,2,3,4,5)  
  2. res134: List[Int] = List(12345)  
  3. scala> res134.map(x => x * 2)  
  4. res135: List[Int] = List(246810)  

結(jié)果是List(2, 4, 6, 8, 10),即將每一個(gè)元素乘以2。題外話,還有一個(gè)叫做filter的函數(shù),他返回過(guò)濾結(jié)果。

  1. scala> res134.filter(x => x != 3)  
  2. res136: List[Int] = List(1245)這里是返回3以外的元素。那么,接下來(lái)對(duì)于List(12345)應(yīng)用如下函數(shù)。  
  3. x => x match {  
  4. case 3 => List(3.13.23.3)  
  5. case _ => List(x * 2)  

也就是,3以外的情況下使元素值翻倍,3的時(shí)候?qū)⒃胤指顬椤?.1, 3.2, 3.3“。因此,表面上對(duì)于List(1,2,3,4,5)適用該函數(shù)后希望返回的是List(1, 2, 3.1, 3.2, 3.3, 4, 5),但用了map函數(shù)后實(shí)際上不是。

  1. scala> res134.map(x => x match {  
  2. case 3 => List(3.13.23.3)  
  3. case _ => x * 2 
  4. | })  
  5. res138: List[Any] = List(24, List(3.13.23.3), 810

結(jié)果中的確包含了3.1, 3.2, 3.3,但是以List中包含List為形式的。這樣只完成了一半,同前面的XML處理一樣現(xiàn)象。那么,使用一下flatMap函數(shù)吧。

  1. scala> res134.flatMap(x => x match {  
  2. case 3 => List(3.13.23.3)  
  3. case _ => List(x * 2)  
  4. | })  
  5. res139: List[AnyVal] = List(243.13.23.3810

噢!就是想要的結(jié)果。不僅包含了希望的元素,還將所有元素平攤成了一個(gè)列表。

Scala講座 圖2:組合模式flatMap函數(shù)概念圖 

Scala講座 圖2:組合模式flatMap函數(shù)概念圖

回到XML的例子中,正因?yàn)橛胒latMap函數(shù)代替了map函數(shù),所以對(duì)于< xml>和< dir>部分來(lái)說(shuō),原本在遞歸調(diào)用中返回的是List,但是flatMap函數(shù)將其互相合并,攤平為單一列表了。

  1. scala> def fileFinder(node:scala.xml.Node):List[scala.xml.Node] = node.label match {  
  2. case "xml" => node.child.toList.flatMap(fileFinder)  
  3. case "dir" => node.child.toList.flatMap(fileFinder)  
  4. case "file" => List(node)  
  5. case _ => List()}  
  6. fileFinder: (scala.xml.Node)List[scala.xml.Node]  
  7. scala> fileFinder(xml).foreach(x => println("file:" + x.attribute("name").getOrElse("")))  
  8. file:aaa.txt  
  9. file:bbb.txt  
  10. file:ccc.txt  
  11. file:ddd.txt 

正如所愿的結(jié)果就一下子得到了,函數(shù)式編程真是恐怖呀!這次學(xué)的map和flatMap函數(shù)在Scala中有非常重要的意義。這可以說(shuō)是函數(shù)式編程的一個(gè)高潮,理解了這個(gè)之后領(lǐng)悟的大門(mén)就可以說(shuō)向你敞開(kāi)了。這實(shí)際上還與單子(monado)這一思考方法有關(guān),理解了map和flatMap函數(shù)之后可以說(shuō)是踏出了完全掌握該思考方法的一大步。關(guān)于“單子”在本連載中還會(huì)著重說(shuō)明。

【編輯推薦】

  1. 萬(wàn)物皆對(duì)象:介紹Scala對(duì)象
  2. Scala的泛型:***大的特性
  3. Scala的Trait:可以包含代碼的接口
  4. Scala的模式匹配和條件類
  5. Scala類:復(fù)數(shù)類,無(wú)參方法,繼承和覆蓋
責(zé)任編輯:book05 來(lái)源: JavaEye博客
相關(guān)推薦

2009-12-11 10:44:00

Scala講座函數(shù) scala

2009-09-24 09:41:00

Scala講座Scala

2010-03-11 10:34:22

Scala

2009-09-27 15:29:00

Scala講座面向?qū)ο?/a>Scala

2009-12-11 10:42:00

Scala講座類定義構(gòu)造函數(shù)

2009-09-24 09:38:00

Scala講座第一類對(duì)象scala

2010-01-28 14:51:24

Scala后函數(shù)式

2009-07-08 16:10:24

Scala簡(jiǎn)介面向?qū)ο?/a>函數(shù)式

2018-11-12 09:50:56

Python函數(shù)式編程數(shù)據(jù)結(jié)構(gòu)

2009-12-11 10:43:00

Scala講座操作符函數(shù)

2009-06-09 13:18:56

Scala函數(shù)式命令式

2010-07-07 13:11:20

ScalaF#C#

2010-07-09 14:12:00

ScalaF#C#

2009-12-11 10:45:00

Scala講座類型系統(tǒng)功能

2009-09-24 09:28:00

Scala講座全局變量scala

2013-09-09 09:41:34

2009-07-21 17:16:34

Scala函數(shù)式指令式

2009-12-11 10:43:00

Scala講座混入多重繼承類型層次

2020-09-24 10:57:12

編程函數(shù)式前端

2025-03-11 10:00:20

Golang編程函數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩一区二区三区高清在线观看| 欧美三级黄网| 三级不卡在线观看| 北条麻妃在线一区二区| 特黄特黄一级片| а√在线中文在线新版| 日本一区二区成人在线| 99精品在线直播| 成人免费毛片男人用品| 香港欧美日韩三级黄色一级电影网站| 精品久久人人做人人爱| 热久久精品免费视频| 免费在线午夜视频| 99精品桃花视频在线观看| 国产精品久久久久久一区二区| 男女做暖暖视频| 久久最新网址| 精品奇米国产一区二区三区| 免费观看成人在线视频| 国产三线在线| **性色生活片久久毛片| 久久久久久草| 空姐吹箫视频大全| 麻豆精品视频在线| 45www国产精品网站| 婷婷激情四射网| 国产日产精品一区二区三区四区的观看方式 | 亚洲激情偷拍| 久久躁狠狠躁夜夜爽| 90岁老太婆乱淫| 超碰成人福利| 日韩小视频在线观看专区| 久久久久久久片| 爱啪啪综合导航| 亚洲综合一二三区| 三级在线免费观看| 天堂а√在线官网| 国产视频一区二区三区在线观看| 国产亚洲精品久久飘花| 午夜久久久久久噜噜噜噜| 久久精品二区亚洲w码| 国产激情久久久久| 好吊色在线视频| 中文日韩欧美| 97**国产露脸精品国产| 精品少妇久久久久久888优播| 99欧美视频| 色播久久人人爽人人爽人人片视av| 中文字幕一区二区三区人妻不卡| jizz性欧美23| 精品91自产拍在线观看一区| 四虎国产精品免费| 一区二区三区视频播放| 日韩一级片在线播放| 五月婷婷激情久久| 黄色日韩网站| 91精品国产色综合久久| 做a视频在线观看| 亚洲欧洲专区| 欧美一区二区三区公司| 亚洲欧美一区二区三区不卡| 国产专区精品| 精品乱人伦小说| 超碰caoprom| 亚洲精品推荐| 一本色道久久88综合亚洲精品ⅰ| 中文字幕av网址| 狠狠色狠狠色综合婷婷tag| 亚洲欧美日本另类| 中文字幕第二区| 婷婷久久综合| 久久久免费在线观看| 国产午夜福利精品| 久久精品麻豆| 国产日韩欧美黄色| 性生活视频软件| 99r精品视频| 人禽交欧美网站免费| 午夜国产福利在线| 一区二区三区久久| 欧美精品一区免费| 99久久婷婷国产综合精品首页| 欧美日韩国产精选| wwwxxx色| 免费精品国产| 久久亚洲欧美日韩精品专区| 久久一区二区三| 午夜一区在线| 国产在线拍偷自揄拍精品| www夜片内射视频日韩精品成人| av中文字幕不卡| 日韩中文一区二区三区| 在线中文字幕视频观看| 日韩欧美在线字幕| 三级av免费看| 欧美猛男做受videos| 欧美成人午夜剧场免费观看| 日韩三级一区二区三区| 男女激情视频一区| 国产精品一区二区三区在线观| 黄色在线免费观看大全| 亚洲黄色免费网站| 日本熟妇人妻中出| aaa国产精品| 中文字幕亚洲精品| 日韩欧美a级片| 麻豆精品国产91久久久久久| 国产精品一区二区免费| 日本电影在线观看网站| 欧美色图在线视频| 国产成人精品综合久久久久99| 国产99久久| 欧美精品成人91久久久久久久| 中文字幕在线2019| 99久久婷婷国产精品综合| 正在播放国产精品| 成人一级生活片| 日本孕妇大胆孕交无码| 在线视频国内自拍亚洲视频| av地址在线观看| 97精品国产| 国产98色在线| 五月婷婷六月丁香| 一区二区三区在线视频观看| 国产福利影院在线观看| 欧美三级自拍| 欧美精品久久久久久久久久| 亚洲永久精品视频| 国产三级精品在线| 日日摸日日碰夜夜爽av| 91精品丝袜国产高跟在线| 精品国产拍在线观看| 亚洲国产无线乱码在线观看| 91一区在线观看| www.日本少妇| 丁香综合av| 色综合视频一区中文字幕| 国产农村妇女毛片精品| 国产精品国产自产拍在线| 国产一二三四在线视频| 一区二区三区视频免费观看| 午夜精品在线视频| 国产高清不卡视频| 亚洲视频你懂的| 污网站在线免费| 天天操夜夜操国产精品| 国产一区深夜福利| 日本在线观看网站| 欧美日本一道本| 午夜成人亚洲理伦片在线观看| 免费观看久久久4p| 一区二区欧美日韩| 香蕉久久一区| 欧美老少配视频| 国内老熟妇对白xxxxhd| 一区二区不卡在线播放| 又色又爽又黄18网站| 国产精品hd| 九九99久久| 在线看片国产福利你懂的| 亚洲天堂av在线免费观看| 国产黄色免费视频| 国产精品第五页| 宇都宫紫苑在线播放| 国内视频精品| 久久精品aaaaaa毛片| 欧美aa视频| 精品国内自产拍在线观看| 99久久国产免费| 午夜天堂影视香蕉久久| 特级西西人体wwwww| 三级一区在线视频先锋| 亚洲一区二区在线观| 成人久久精品| 5252色成人免费视频| 国产黄色免费在线观看| 欧美色综合网站| 岛国毛片在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产精品久久久久久久久久99| 午夜精品一区| 亚洲成av人乱码色午夜| 一级黄色av片| 亚洲欧美欧美一区二区三区| 88av在线播放| 青青草成人在线观看| 日本a在线天堂| 亚洲素人在线| 91在线观看免费观看| 第一福利在线视频| 深夜精品寂寞黄网站在线观看| 精品国产九九九| 欧美视频在线观看免费| 日韩在线一卡二卡| 99re8在线精品视频免费播放| 一级在线免费视频| 亚洲黄色影院| 一区二区三区电影| 神马日本精品| 91啪国产在线| 精品网站在线| 久久久天堂国产精品女人| eeuss影院www在线观看| 精品对白一区国产伦| 亚洲一区二区影视| 精品女厕一区二区三区| 看免费黄色录像| 久久久不卡网国产精品一区| 爱情岛论坛亚洲自拍| 日产国产高清一区二区三区| 黄页网站大全在线观看| 午夜精品一区二区三区国产| 美女一区视频| 北条麻妃在线一区二区免费播放 | 日韩一区二区在线免费| 精品在线一区| 91蝌蚪精品视频| 成人网在线视频| 日韩制服一区| 热久久这里只有精品| 波多野结衣在线播放| 久久精品国亚洲| melody高清在线观看| 日韩经典第一页| 免费a级片在线观看| 欧美一级欧美三级在线观看| 中文字幕一区二区三区免费看| 色哟哟一区二区三区| 伊人久久综合视频| 亚洲午夜av在线| 欧美日韩免费一区二区| 亚洲欧洲日韩在线| 国产精品视频在| 国产女人18毛片水真多成人如厕| 狠狠人妻久久久久久综合蜜桃| 国产69精品久久久久毛片| 日本美女久久久| 国产伦精品一区二区三区免费| 亚洲另类第一页| 麻豆一区二区99久久久久| 中文久久久久久| 日本麻豆一区二区三区视频| 国产精品天天av精麻传媒| 米奇777在线欧美播放| 116极品美女午夜一级| 国产精品入口| 欧美牲交a欧美牲交aⅴ免费真| 午夜一级在线看亚洲| 欧美激情精品久久久久久小说| 首页国产欧美久久| 9久久婷婷国产综合精品性色 | 精品亚洲欧美日韩| 校园春色另类视频| 欧美久久电影| 日韩国产一区二区| 一本一道久久a久久精品综合| 欧美gayvideo| 日日噜噜夜夜狠狠久久丁香五月| 亚洲最大黄网| 精品国产一区二区三区无码| 18成人免费观看视频| 国产免费黄视频| 日韩av中文字幕一区二区三区 | 国产一区视频网站| 不许穿内裤随时挨c调教h苏绵| 成人成人成人在线视频| 深爱五月激情网| 国产精品美女久久久久高潮| 国产高潮流白浆| 欧美日韩一区二区三区在线免费观看| 日韩综合在线观看| 欧美疯狂做受xxxx富婆| 亚洲国产精品久久久久爰性色 | 国产欧美大片| 超碰在线97免费| 国产成人免费视频网站| www.超碰97| 亚洲视频一区二区在线观看| 日本在线视频中文字幕| 色婷婷亚洲精品| 国产精品一区二区三区在线免费观看| 欧美va亚洲va在线观看蝴蝶网| 五月激情六月婷婷| 色悠悠国产精品| caoporn-草棚在线视频最| 日韩免费观看在线观看| 不卡的国产精品| 免费日韩av电影| 中文字幕亚洲综合久久五月天色无吗'' | 一本在线高清不卡dvd| 亚洲综合一区中| 亚洲国产女人aaa毛片在线| 成人综合影院| 久久久久久com| 国产资源一区| 久草精品电影| 午夜日韩av| 亚洲激情在线观看视频| www.久久久久久久久| 美女视频久久久| 一本久久综合亚洲鲁鲁五月天| av免费观看在线| 亚洲欧美国产制服动漫| 成人看片免费| 日本国产一区二区三区| 日韩精品中文字幕一区二区 | 亚洲の无码国产の无码步美| 成人欧美一区二区三区1314| 成人午夜视频在线播放| 欧美成人一区二区三区片免费| 成人好色电影| 欧美在线观看日本一区| 日韩中文一区二区| 亚洲国产一区二区精品视频 | 欧美日韩卡一卡二| 日韩欧美在线观看一区二区| 久久av中文字幕| 九九九伊在线综合永久| 久久亚洲一区二区| 黑人一区二区三区四区五区| 天天摸天天舔天天操| 国产亚洲欧美一区在线观看| 亚洲精品1区2区3区| 精品国产成人在线影院| jizz性欧美| 91最新国产视频| 久久免费精品视频在这里| 欧洲熟妇精品视频| 久久久久久久综合| 国产精品自拍99| 日韩大陆欧美高清视频区| 电影k8一区二区三区久久| 99久久精品久久久久久ai换脸| 欧美电影一区| 日本不卡一区二区在线观看| 中文一区在线播放| 亚洲男人天堂网址| 亚洲深夜福利在线| 欧美va在线观看| 欧美一区二区福利| 久久精品日产第一区二区| 日韩在线免费观看av| 色综合中文综合网| 黄色国产在线| 国产精品久久久久久久久久久久久久| 免费电影一区二区三区| 国产免费视频传媒| 国产三级精品三级在线专区| 亚洲午夜无码久久久久| 中文字幕日韩欧美在线视频| 亚洲精品毛片| 视频一区二区视频| 国产很黄免费观看久久| 久久国产在线观看| 日韩av在线网| 竹内纱里奈兽皇系列在线观看| 日本一区二区精品视频| 免费观看一级特黄欧美大片| 女性裸体视频网站| 日韩一区二区免费高清| 91破解版在线观看| 蜜桃导航-精品导航| 丝袜亚洲精品中文字幕一区| 日韩视频在线观看免费视频| 91麻豆精品国产91久久久资源速度 | 亚洲福利精品视频| 亚洲精品成人在线| 手机看片1024国产| 91精品国产高清| 精品视频日韩| 无码人妻少妇色欲av一区二区| 亚洲一区二区四区蜜桃| 久久天堂电影| 91九色单男在线观看| 一区免费在线| 国产在线综合视频| 日韩欧美美女一区二区三区| 成年人黄色大片在线| 日韩高清dvd| 国产成人综合精品三级| 精品国产xxx| 久久精品久久久久久| 色先锋久久影院av| 欧美在线a视频| 色综合色综合色综合| 超碰在线网址| 欧美国产一区二区在线| 国产在线精品一区二区不卡了| www.天天色| 日韩午夜在线视频| 精品久久ai| 三级av免费观看| 偷拍一区二区三区| 精品国产丝袜高跟鞋| 久久五月天婷婷| 国产成人在线看| 最新在线中文字幕| 7777kkkk成人观看| **女人18毛片一区二区| 粉嫩av蜜桃av蜜臀av|