產(chǎn)品介紹
什么是數(shù)環(huán)通
基礎(chǔ)概念講解
應(yīng)用場(chǎng)景
多渠道數(shù)據(jù)融合
業(yè)務(wù)、財(cái)務(wù)、辦公自動(dòng)化
產(chǎn)業(yè)鏈應(yīng)用與數(shù)據(jù)集成
工業(yè)應(yīng)用與設(shè)備互聯(lián)
智慧園區(qū)與未來(lái)社區(qū)
快速入門
創(chuàng)建LinkUp
應(yīng)用授權(quán)
判斷用法
監(jiān)控用法
分支用法
列表逐條處理
變量與表達(dá)式
流程管理
項(xiàng)目管理
流程創(chuàng)建
編輯器操作
單步測(cè)試與預(yù)覽
試運(yùn)行
發(fā)布與版本管理
錯(cuò)誤步驟重試
數(shù)據(jù)同步
JSON Path 使用
輸出處理
數(shù)據(jù)編排
1、功能使用手冊(cè)
2、腳本使用手冊(cè)
1 、簡(jiǎn)單查詢
2、謂詞查詢
3、函數(shù)與表達(dá)式
4、構(gòu)建結(jié)構(gòu)結(jié)果
5、查詢組合
6、排序、分組和聚合
7、處理模型
8、函數(shù)式編程
9、正則表達(dá)式
10、日期、時(shí)間處理
11、路徑運(yùn)算符
12、數(shù)字運(yùn)算符
13、比較運(yùn)算符
14、布爾運(yùn)算符
15、其他運(yùn)算符
16、字符串函數(shù)
17、數(shù)值函數(shù)
18、 數(shù)字聚合函數(shù)
19、布爾函數(shù)
20、數(shù)組函數(shù)
21、對(duì)象函數(shù)
22、日期/時(shí)間函數(shù)
23、高階函數(shù)
運(yùn)行日志
運(yùn)行記錄
開(kāi)發(fā)工具
連接器工具
連接器源碼配置
控件類型配置
腳本配置說(shuō)明
內(nèi)置函數(shù)
應(yīng)用講解
內(nèi)置應(yīng)用
瀏覽器插件
數(shù)據(jù)表
文本字符串
日期
數(shù)據(jù)篩選
數(shù)據(jù)處理
延時(shí)處理
數(shù)學(xué)計(jì)算器
定時(shí)觸發(fā)器
子流程調(diào)用
手動(dòng)觸發(fā)器
物流地址解析
腳本執(zhí)行器
自定義變量
文件讀取
Webhook
SMTP發(fā)送郵件
文件傳輸
JSON工具
網(wǎng)絡(luò)工具
消息處理
PDF水印工具
文件存儲(chǔ)
API服務(wù)
Http請(qǐng)求
循環(huán)控制
EDI 自定義標(biāo)準(zhǔn)數(shù)據(jù)轉(zhuǎn)換
對(duì)象類型判斷
瀏覽器操作
三方應(yīng)用
簡(jiǎn)道云
金山數(shù)據(jù)表
抖音
釘釘(自建應(yīng)用)
語(yǔ)雀
金山表單
微信公眾號(hào)
企業(yè)微信群機(jī)器人
聚水潭
企業(yè)微信三方授權(quán)
MySQL
SqlServer
ChatGpt
快手
金山輕維表
抖店
維格表
巨量千川
飛書(shū)多維表
釘釘機(jī)器人
飛書(shū)(自建)
釘釘
百度網(wǎng)盤
QQ郵箱
金山工作表
易知微DTable
MQTT
Doirs
中通快遞
韻達(dá)速遞
企業(yè)微信(代開(kāi)發(fā))
知乎效果營(yíng)銷平臺(tái)
飛書(shū)云文檔
騰訊企業(yè)郵箱
API管理
API管理概述
數(shù)據(jù)概覽
API服務(wù)
訪問(wèn)憑證
API門戶
API安全密鑰簽名
API監(jiān)控預(yù)警
擴(kuò)展工具
代理網(wǎng)關(guān)
消息處理
管理中心
企業(yè)管理
操作日志
成員管理
開(kāi)放平臺(tái)
開(kāi)放平臺(tái)簡(jiǎn)介
接入教程
常見(jiàn)問(wèn)題
數(shù)環(huán)通ip白名單
最佳實(shí)踐
彥祖文化 |通過(guò)數(shù)環(huán)通實(shí)現(xiàn)全渠道數(shù)據(jù)融合打通
新石器|通過(guò)數(shù)環(huán)通實(shí)現(xiàn)跨系統(tǒng)、跨部門高效協(xié)同
幫助首頁(yè)
數(shù)據(jù)編排
2、腳本使用手冊(cè)
8、函數(shù)式編程
8、函數(shù)式編程
# 編程構(gòu)造 到目前為止,我們已經(jīng)介紹了該語(yǔ)言的所有部分,這些部分使我們能夠從輸入 JSON 文檔中提取數(shù)據(jù)、使用字符串和數(shù)字運(yùn)算符組合數(shù)據(jù)以及格式化輸出 JSON 文檔的結(jié)構(gòu)。接下來(lái)是將其轉(zhuǎn)變?yōu)閳D靈完備的函數(shù)式編程語(yǔ)言的部分。 ## 說(shuō)明 表達(dá)式可以使用“C”樣式注釋分隔符與注釋交錯(cuò)。例如, ``` /* Long-winded expressions might need some explanation */ ( $pi := 3.1415926535897932384626; $plot := function($x) {( $floor := $string ~> $substringBefore(?, '.') ~> $number; $index := $floor(($x + 1) * 20 + 0.5); $join([0..$index].('.')) & 'O' & $join([$index..40].('.')) )}; /* Factorial is the product of the integers 1..n */ $product := function($a, $b) { $a * $b }; $factorial := function($n) { $n = 0 ? 1 : $reduce([1..$n], $product) }; $sin := function($x){ /* define sine in terms of cosine */ $cos($x - $pi/2) }; $cos := function($x){ /* Derive cosine by expanding Maclaurin series */ $x > $pi ? $cos($x - 2 * $pi) : $x < -$pi ? $cos($x + 2 * $pi) : $sum([0..12].($power(-1, $) * $power($x, 2*$) / $factorial(2*$))) }; [0..24].$sin($*$pi/12).$plot($) ) ``` 如果您有興趣的話,可以制作[這個(gè)]()! ## 條件邏輯 可以使用三元運(yùn)算符“?:”編寫 If/then/else 結(jié)構(gòu)。 `predicate ? expr1 : expr2` 表達(dá)式 `predicate` 被求值。如果其有效布爾值(參見(jiàn)定義)為 `true`,則 `expr1` 求值并返回,否則 `expr2` 求值并返回。 **示例** ``` Account.Order.Product.{ `Product Name`: $.Price > 100 ? "Premium" : "Basic" } //結(jié)果 [ { "Bowler Hat": "Basic" }, { "Trilby hat": "Basic" }, { "Bowler Hat": "Basic" }, { "Cloak": "Premium" } ] ``` ## 變量 任何以美元符號(hào)“$”開(kāi)頭的名稱都是變量。變量是對(duì)值的命名引用。該值可以是語(yǔ)言[類型系統(tǒng)]()中的任意類型。 ### 內(nèi)置變量 * `$` 沒(méi)有名稱的變量指的是輸入 JSON 層次結(jié)構(gòu)中任意一點(diǎn)的上下文值。示例 * `$$` 輸入 JSON 的根。僅當(dāng)您需要脫離當(dāng)前上下文以暫時(shí)導(dǎo)航到其他路徑時(shí)才需要。例如用于交叉引用或連接數(shù)據(jù)。示例 * 本機(jī)(內(nèi)置)函數(shù)。請(qǐng)參閱函數(shù)庫(kù)。 ### 變量綁定 值(類型系統(tǒng)中的任意類型)可以綁定到變量 `$var_name := "value"` 稍后可以使用表達(dá)式引用存儲(chǔ)的值 `$var_name`。 變量的作用域僅限于它所綁定的“塊”。例如 ``` Invoice.( $p := Product.Price; $q := Product.Quantity; $p * $q ) ``` 返回發(fā)票中產(chǎn)品價(jià)格乘以數(shù)量。 ## 功能 函數(shù)是一等類型,可以像任何其他數(shù)據(jù)類型一樣存儲(chǔ)在變量中。提供了內(nèi)置函數(shù)庫(kù)(鏈接)并將其分配給全局范圍內(nèi)的變量。例如,`$uppercase` 包含一個(gè)函數(shù),當(dāng)使用字符串參數(shù)調(diào)用時(shí),`str` 將返回一個(gè)字符串,其中 中的所有字符都 `str` 更改為大寫。 ### 調(diào)用函數(shù) 函數(shù)的調(diào)用是通過(guò)在其引用(或定義)后面加上包含逗號(hào)分隔的參數(shù)序列的括號(hào)來(lái)實(shí)現(xiàn)的。 **示例** * `$uppercase("Hello")` 返回字符串“HELLO”。 * `$substring("hello world", 0, 5)` 返回字符串“hello” * `$sum([1,2,3])` 返回?cái)?shù)字 6 ### 定義函數(shù) 可以使用以下語(yǔ)法定義匿名(lambda)函數(shù): `function($l, $w, $h){ $l * $w * $h }` 可以使用以下方式調(diào)用 `function($l, $w, $h){ $l * $w * $h }(10, 10, 5)` 返回 500 該函數(shù)還可以分配給變量以供將來(lái)使用(在塊內(nèi)) ```( $volume := function($l, $w, $h){ $l * $w * $h }; $volume(10, 10, 5); ) ``` ### 函數(shù)簽名 函數(shù)可以用可選簽名來(lái)定義,該簽名指定函數(shù)的參數(shù)類型。如果提供,評(píng)估引擎將在調(diào)用函數(shù)之前驗(yàn)證傳遞給函數(shù)的參數(shù)。如果參數(shù)列表與簽名不匹配,則會(huì)引發(fā)動(dòng)態(tài)錯(cuò)誤。 函數(shù)簽名是形式為 的字符串 `<params:return>`。`params` 是類型符號(hào)序列,每個(gè)符號(hào)代表一個(gè)輸入?yún)?shù)的類型。`return` 是表示返回值類型的單個(gè)類型符號(hào)。 類型符號(hào)的工作原理如下: 簡(jiǎn)單類型: * `b`- boolean * `n`-number * `s`- string * `l`-`null` 復(fù)雜類型: * `a`- array * `o`- object * `f`- function 聯(lián)合類型: * `(sao)`- string、array、objct * `(o)`- 等同 `o` * `u`- 相當(dāng)于 `(bnsl)` boolean、number、string、`null` * `j`- 任何 JSON 類型。相當(dāng)于 `(bnsloa)` boolean、number、string、 `null`、對(duì)象或數(shù)組,但不是函數(shù) * `x`- 任何類型。相當(dāng)于 `(bnsloaf)` 參數(shù)化類型: * `a<s>`- 字符串?dāng)?shù)組 * `a<x>`- 任意類型的值數(shù)組 內(nèi)置 函數(shù)簽名的一些示例: * `$count` 有簽名 `<a:n>`;它接受一個(gè)數(shù)組并返回一個(gè)數(shù)字。 * `$append` 有簽名 `<aa:a>`;它接受兩個(gè)數(shù)組并返回一個(gè)數(shù)組。 * `$sum` 有簽名 `<a<n>:n>`;它接受一個(gè)數(shù)字?jǐn)?shù)組并返回一個(gè)數(shù)字。 * `$reduce` 有簽名 `<fa<j>:j>`;它接受一個(gè) Reducer 函數(shù) `f` 和一個(gè) `a<j>`(JSON 對(duì)象數(shù)組)并返回一個(gè) JSON 對(duì)象。 每種類型符號(hào)也可能有應(yīng)用的 *選項(xiàng)* 。 * `+`- 一個(gè)或多個(gè)此類型的參數(shù) * 例如 `$zip` 有簽名 `<a+>`;它接受一個(gè)數(shù)組,或兩個(gè)數(shù)組,或三個(gè)數(shù)組,或...... * `?`- 可選參數(shù) * 例如 `$join` 有簽名 `<a<s>s?:s>`;它接受一個(gè)字符串?dāng)?shù)組和一個(gè)可選的連接字符串(默認(rèn)為空字符串)。它返回一個(gè)字符串。 * `-`- 如果缺少此參數(shù),則使用上下文值(“focus”)。 * 例如 `$length` 有簽名 `<s-:n>`;它可以被稱為 `$length(OrderID)`(一個(gè)參數(shù)),但等效于 `OrderID.$length()`。 ### 遞歸函數(shù) 已分配給變量的函數(shù)可以使用該變量引用來(lái)調(diào)用自身。這允許定義遞歸函數(shù)。例如。 ``` ( $factorial:= function($x){ $x <= 1 ? 1 : $x * $factorial($x-1) }; $factorial(4 ) //結(jié)果 24 ``` 請(qǐng)注意,實(shí)際上可以使用純匿名函數(shù)(即不將任何內(nèi)容分配給變量)編寫遞歸函數(shù)。這是使用[Y-combinator]()完成的,對(duì)于那些對(duì)函數(shù)式編程感興趣的人來(lái)說(shuō),這可能是一個(gè)有趣的[消遣。]() ### 尾調(diào)用優(yōu)化(尾遞歸) 遞歸函數(shù)每次調(diào)用自身時(shí)都會(huì)向調(diào)用堆棧添加一個(gè)新框架。如果函數(shù)回退超過(guò)一定限制,這最終會(huì)導(dǎo)致堆棧耗盡。考慮階乘函數(shù)的經(jīng)典遞歸實(shí)現(xiàn) ``` ( $factorial := function($x) { $x <= 1 ? 1 : $x * $factorial($x-1) }; $factorial(170) ) ``` 此函數(shù)的工作原理是將數(shù)字推送到堆棧上,然后在堆棧展開(kāi)時(shí)將其乘以數(shù)字階乘減一的結(jié)果。以這種方式編寫,評(píng)估器別無(wú)選擇,只能使用調(diào)用堆棧來(lái)存儲(chǔ)中間結(jié)果。如果數(shù)字足夠大,調(diào)用堆棧就會(huì)溢出。 這是函數(shù)式編程中公認(rèn)的問(wèn)題,解決方案是稍微重寫函數(shù)以避免需要*堆棧*來(lái)存儲(chǔ)中間結(jié)果。以下階乘的實(shí)現(xiàn)實(shí)現(xiàn)了這一點(diǎn) ``` ( $factorial := function($x){( $iter := function($x, $acc) { $x <= 1 ? $acc : $iter($x - 1, $x * $acc) }; $iter($x, 1) )}; $factorial(170) ) ``` 這里,乘法是*在*函數(shù)調(diào)用自身之前完成的,中間結(jié)果放在第二個(gè)參數(shù) `$acc`(累加器)中。調(diào)用自身是函數(shù)執(zhí)行的*最后一*件事。這被稱為“尾部調(diào)用”,當(dāng) 解析器發(fā)現(xiàn)這一點(diǎn)時(shí),它會(huì)在內(nèi)部將遞歸重寫為一個(gè)簡(jiǎn)單的循環(huán)。因此它可以無(wú)限期地運(yùn)行而不會(huì)增加調(diào)用堆棧。以這種方式編寫的函數(shù)被稱為[尾部遞歸]()。 ### 高階函數(shù) 函數(shù)是一等數(shù)據(jù)類型,可以作為參數(shù)傳遞給另一個(gè)函數(shù),也可以從函數(shù)返回。處理其他函數(shù)的函數(shù)稱為高階函數(shù)。請(qǐng)考慮以下示例: ``` ( $twice := function($f) { function($x){ $f($f($x)) } }; $add3 := function($y){ $y + 3 }; $add6 := $twice($add3); $add6(7) ) ``` * 變量中存儲(chǔ)的函數(shù) `$twice` 是高階函數(shù)。它接受一個(gè) `$f` 函數(shù)參數(shù),并返回一個(gè)接受參數(shù)的函數(shù),該函數(shù) `$x` 在調(diào)用時(shí)會(huì)將該函數(shù)應(yīng)用 `$f` 兩次 `$x`。 * `$add3` 存儲(chǔ)一個(gè)將 3 添加到其參數(shù)的函數(shù)。`$twice` 或 都 `$add3` 尚未被調(diào)用。 * `$twice` 通過(guò)將函數(shù)作為其參數(shù)傳遞來(lái)調(diào)用。這將返回一個(gè)對(duì)其 `add3` 參數(shù)應(yīng)用 `$add3` 兩次的函數(shù)。這個(gè)返回的函數(shù)尚未被調(diào)用,而是被分配給變量。`add6` * 最后,使用參數(shù) 7 調(diào)用函數(shù) `$add6`,結(jié)果將 3 加到該函數(shù)兩次。它返回 13。 ### 函數(shù)是閉包 定義 lambda 函數(shù)時(shí),求值引擎會(huì)獲取環(huán)境快照并將其與函數(shù)體定義一起存儲(chǔ)。環(huán)境由上下文項(xiàng)(即位置路徑中的當(dāng)前值)以及當(dāng)前范圍內(nèi)的變量綁定組成。稍后調(diào)用 lambda 函數(shù)時(shí),將在存儲(chǔ)的環(huán)境中執(zhí)行,而不是在調(diào)用時(shí)的當(dāng)前環(huán)境中執(zhí)行。此屬性稱為*詞法作用域,是* *閉包*的基本屬性。 請(qǐng)考慮以下示例: ``` Account.( $AccName := function() { $.'Account Name' }; Order[OrderID = 'order104'].Product.{ 'Account': $AccName(), 'SKU-' & $string(ProductID): $.'Product Name' } ) ``` 當(dāng)函數(shù)被創(chuàng)建時(shí),上下文項(xiàng)(用 '$' 表示)是 的值 `Account`。稍后,當(dāng)函數(shù)被調(diào)用時(shí),上下文項(xiàng)已在結(jié)構(gòu)中向下移動(dòng)到每個(gè) `Product` 項(xiàng)的值。但是,函數(shù)體是在定義時(shí)存儲(chǔ)的環(huán)境中調(diào)用的,因此其上下文項(xiàng)是 的值 `Account`。這是一個(gè)有點(diǎn)牽強(qiáng)的例子,你實(shí)際上不需要一個(gè)函數(shù)來(lái)做到這一點(diǎn)。表達(dá)式產(chǎn)生以下結(jié)果: ``` { "Account": "Firefly", "SKU-858383": "Bowler Hat", "SKU-345664": "Cloak" } ``` ### 部分函數(shù)應(yīng)用 可以通過(guò)調(diào)用函數(shù)[來(lái)部分應(yīng)用]()函數(shù),其中一個(gè)或多個(gè)(但不是全部)參數(shù)用問(wèn)號(hào)占位 `?` 符替換。這樣做的結(jié)果是另一個(gè)函數(shù),其參數(shù)數(shù)量減少了提供給原始函數(shù)的參數(shù)數(shù)量。這個(gè)返回的函數(shù)可以像任何其他新定義的函數(shù)一樣處理,例如綁定到變量、傳遞給高階函數(shù)等。 **示例** * `$substring` 通過(guò)部分應(yīng)用函數(shù)創(chuàng)建一個(gè)函數(shù)來(lái)返回字符串的前五個(gè)字符 ``` ( $first5 := $substring(?, 0, 5); $first5("Hello, World") ) //結(jié)果 "Hello" ``` * 部分應(yīng)用函數(shù)可以進(jìn)一步部分應(yīng)用 ``` ( $firstN := $substring(?, 0, ?); $first5 := $firstN(?, 5); $first5("Hello, World") ) //結(jié)果 "Hello" ``` ### 函數(shù)鏈 函數(shù)鏈接有兩種使用方式: 1. 當(dāng)多個(gè)函數(shù)應(yīng)用于一個(gè)值時(shí),避免大量嵌套 2. 作為通過(guò)組合現(xiàn)有函數(shù)來(lái)定義新函數(shù)的高階構(gòu)造 #### 調(diào)用鏈 `value ~> $funcA ~> $funcB` 相當(dāng)于 `$funcB($funcA(value))` **示例** * `Customer.Email ~> $substringAfter("@") ~> $substringBefore(".") ~> $uppercase()` #### 函數(shù)組合 [函數(shù)組合](https://en.wikipedia.org/wiki/Function_composition)是將一個(gè)函數(shù)應(yīng)用到另一個(gè)函數(shù)中以產(chǎn)生第三個(gè)函數(shù)。 `$funcC := $funcA ~> $funcB` 相當(dāng)于 `$funcC := function($arg) { $funcB($funcA($arg)) }` **示例** * 通過(guò)鏈接兩個(gè)現(xiàn)有函數(shù)來(lái)創(chuàng)建新函數(shù) ``` ( $normalize := $uppercase ~> $trim; $normalize(" Some Words ") ) //結(jié)果 "SOME WORDS" ``` ### 函數(shù)作為第一類值 函數(shù)組合可以與部分函數(shù)應(yīng)用相結(jié)合,產(chǎn)生用于定義新函數(shù)的非常緊湊的語(yǔ)法。 **示例** * 通過(guò)鏈接兩個(gè)部分求值的函數(shù)來(lái)創(chuàng)建新函數(shù) ``` ( $first5Capitalized := $substring(?, 0, 5) ~> $uppercase(?); $first5Capitalized(Address.City) ) //結(jié)果 "WINCH" ``` ### 高級(jí)示例——Y-combinator 沒(méi)有必要閱讀本節(jié)——它不會(huì)對(duì)您的理智或操作 JSON 數(shù)據(jù)的能力產(chǎn)生任何影響。 前面我們學(xué)習(xí)了如何編寫遞歸函數(shù)來(lái)計(jì)算數(shù)字的階乘,并暗示這可以在不命名任何函數(shù)的情況下完成。我們可以將高階函數(shù)發(fā)揮到極致,并編寫以下內(nèi)容: ``` λ($f) { λ($x) { $x($x) }( λ($g) { $f( (λ($a) {$g($g)($a)}))})}(λ($f) { λ($n) { $n < 2 ? 1 : $n * $f($n - 1) } })(6) ``` 得出結(jié)果 `720`。希臘符號(hào) lambda (λ) 可以代替單詞 `function`,如果你能在鍵盤上找到它,它將節(jié)省屏幕空間并讓[lambda 演算]()的粉絲們滿意。 上述表達(dá)式的第一部分是該語(yǔ)言中[Y 組合器]()的實(shí)現(xiàn)。我們可以將其分配給一個(gè)變量并將其應(yīng)用于其他遞歸匿名函數(shù): ``` ( $Y := λ($f) { λ($x) { $x($x) }( λ($g) { $f( (λ($a) {$g($g)($a)}))})}; [1,2,3,4,5,6,7,8,9] . $Y(λ($f) { λ($n) { $n <= 1 ? $n : $f($n-1) + $f($n-2) } }) ($) ) ``` 產(chǎn)生斐波那契數(shù)列 `[ 1, 1, 2, 3, 5, 8, 13, 21, 34 ]`。 但我們不需要做任何這些。使用命名函數(shù)更為明智: ```( $fib := λ($n) { $n <= 1 ? $n : $fib($n-1) + $fib($n-2) }; [1,2,3,4,5,6,7,8,9] . $fib($) ) ```
上一篇
7、處理模型
下一篇
9、正則表達(dá)式
手機(jī)掃碼
復(fù)制鏈接
手機(jī)掃一掃轉(zhuǎn)發(fā)分享
復(fù)制鏈接
Markdown文件
分享
鏈接
類型
密碼
更新密碼
澳门久久_av毛片在线免费观看_亚洲色欲色欲www_久久成人免费_久久精品小短片_aaa在线
动漫3d精品一区二区三区
|
久久久777
|
国产成人看片
|
亚洲成人在线视频网站
|
精品动漫av
|
国产精品乱码
|
自拍视频一区二区三区
|
亚洲一级在线
|
日韩久久在线
|
91久久久久
|
精品一区二区三区日本
|
欧美日韩在线精品
|
999国产在线
|
欧美精品国产一区
|
99久久精品免费看国产一区二区三区
|
欧美成人亚洲
|
18成人免费观看网站下载
|
日本不卡二区高清三区
|
亚洲免费久久
|
欧美欧美一区二区
|
国产偷久久久精品专区
|
免费99视频
|
国产精品入口66mio
|
日产精品久久久一区二区
|
亚洲伦理精品
|
视频一区三区
|
99视频在线
|
国产一区再线
|
欧美日韩国产免费一区二区三区
|
在线看无码的免费网站
|
久久久99国产精品免费
|
国产欧美亚洲日本
|
午夜精品一区二区在线观看
|
久久久久国产一区二区
|
欧美成人69
|
精品国产_亚洲人成在线
|
欧美视频观看一区
|
欧美一级片免费观看
|
老鸭窝91久久精品色噜噜导演
|
一区二区日本伦理
|
av资源站久久亚洲
|
亚洲欧洲一区二区在线观看
|
日韩欧美一区二区三区四区
|
美女尤物久久精品
|
永久域名在线精品
|
日韩一区二区三区资源
|
97超碰人人看人人
|
亚洲精品乱码久久久久久蜜桃麻豆
|
欧美日韩在线精品
|
欧美专区在线
|
亚洲国产一区二区在线
|
亚洲视频sss
|
国产一区二区三区高清视频
|
在线一区亚洲
|
欧美二区视频
|
日韩欧美亚洲日产国
|
国产日韩一区二区
|
久久人人97超碰人人澡爱香蕉
|
www国产亚洲精品
|
亚洲精品一品区二品区三品区
|
亚洲一区二区四区
|
欧美人xxxxx
|
精品麻豆av
|
久久精品人人做人人爽电影蜜月
|
1024日韩
|
国产精品多人
|
欧美a级片一区
|
日韩不卡av
|
欧美高清一区二区
|
国内视频一区
|
高清国产在线一区
|
久久亚洲国产精品一区二区
|
亚洲三级网站
|
黄色在线一区
|
激情六月综合
|
国精品一区二区
|
欧美成人一品
|
欧美精品成人
|
欧美精品一区二区三区在线看午夜
|
日韩欧美手机在线
|
欧美日韩在线一二三
|
蜜桃91精品入口
|
久久精品国产精品国产精品污
|
国产精品日韩欧美一区二区
|
成人激情av
|
国产亚洲精品久久飘花
|
国产另类自拍
|
久久久久久国产精品免费免费
|
风间由美久久久
|
精品91免费
|
欧美日韩高清免费
|
日本一区网站
|
亚洲精品永久www嫩草
|
亚洲日本无吗高清不卡
|
伊人天天久久大香线蕉av色
|
伊人色综合影院
|
欧美另类一区
|
亚洲美女91
|
老鸭窝毛片一区二区三区
|
久久精品首页
|
国产乱码一区
|
欧美日韩亚洲一区二区三区在线观看
|
欧美日韩亚洲一区二区三区四区
|
日韩精品在在线一区二区中文
|
日韩欧美一区二区视频在线播放
|
欧美日韩国产探花
|
亚洲精美视频
|
亚洲一区高清
|
成人av免费电影
|
欧美理论一区二区
|
亚洲日本欧美在线
|
伊人久久大香线蕉综合热线
|
国产日韩精品一区观看
|
99理论电影网
|
欧美日韩在线高清
|
伊人色综合久久天天五月婷
|
黑人巨大精品欧美一区二区小视频
|
亚洲精品一二
|
国产66精品久久久久999小说
|
久久精品人成
|
欧美一区二区三区久久精品茉莉花
|
亚洲国产精品一区在线观看不卡
|
国产精品日韩一区二区
|
欧美日韩天天操
|
欧美欧美全黄
|
欧美亚洲免费在线
|
精品免费二区三区三区高中清不卡
|
国产亚洲欧美一区二区三区
|
91精品国产高清久久久久久91裸体
|
国产自产精品
|
久久一区欧美
|
日本免费高清不卡
|
亚洲图片在线
|
99国产在线
|
午夜精品区一区二区三
|
亚洲高清资源综合久久精品
|
99超碰麻豆
|
一区二区三区我不卡
|
国产日韩欧美在线播放不卡
|
国产精品一区二区三区免费
|
一区二区三区四区五区精品
|
国产婷婷精品
|
欧洲精品久久
|
亚洲最新在线
|
欧美自拍资源在线
|
一区二区三区四区国产
|
国产精品一码二码三码在线
|
午夜精品剧场
|
99在线观看视频
|
欧美精品不卡
|
国产专区一区二区
|
国内精品亚洲
|
久久大片网站
|
亚洲精品乱码久久久久久蜜桃麻豆
|
国内一区在线
|
在线欧美亚洲
|
日韩欧美亚洲在线
|
噜噜噜在线观看免费视频日韩
|
午夜精品区一区二区三
|
51精品国产人成在线观看
|
午夜国产精品视频
|
国产在线视频欧美一区二区三区
|
亚洲午夜黄色
|
日韩成人在线资源
|
久久亚洲国产精品一区二区
|
最新欧美日韩亚洲
|
国产精品久久亚洲7777
|
伊人久久亚洲美女图片
|
蜜桃视频在线观看成人
|
国产精品三上
|
欧美 日韩 国产 一区
|
国产精品一区二区三区免费观看
|
极品少妇一区二区三区
|
欧美精品免费观看二区
|
国产精品日韩一区二区三区
|
亚洲ai欧洲av
|
国产在线一区二
|
国产一区二区你懂的
|
欧美国产综合
|
欧美13一14另类
|
久久一区精品
|
在线亚洲成人
|
欧美视频日韩
|
亚欧精品在线
|
免费99视频
|
国产精品swag
|
免费在线成人av
|
黄色欧美日韩
|
欧美高清日韩
|
亚洲 国产 日韩 综合一区
|
国产一区二区三区四区五区在线
|
亚洲一级在线
|
亚洲精美视频
|
国产精品分类
|
一级二级三级欧美
|
日韩尤物视频
|
久久久久久国产精品免费免费
|
老司机精品久久
|
免费亚洲一区
|
亚洲欧美日韩视频二区
|