用例設(shè)計(jì) 作為一個(gè) dispatcher ,我們只需要兩個(gè)方法: not " /> 午夜精品美女久久久久av福利,欧美视频1区,午夜av在线免费观看

色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

用JavaScript對(duì)JSON進(jìn)行模式匹配(Part 1-設(shè)計(jì))

至于篩選條件的描述,模式匹配是一種很常見(jiàn)也很好用的方式。在 JavaScript 里面,用 JSON 來(lái)描述模式又是相當(dāng)方便的事情,所以我們來(lái)做一個(gè) JSON 模式匹配工具吧。

用例設(shè)計(jì)
作為一個(gè) dispatcher ,我們只需要兩個(gè)方法: notify 和 capture 。一個(gè)最簡(jiǎn)單的用例是這樣的:
復(fù)制代碼 代碼如下:
Dispatcher.capture({
"status": 200,
"command": "message"
}, function(json) { /* display message */ });

Dispatcher.notify({
“status": 200,
"command": "message",
"content": {
"from": "user1",
"to": "user2",
"text": "hello"
}
});

當(dāng)然,只有局部的全等匹配是不夠的,我們還需要一些其他運(yùn)算符。
復(fù)制代碼 代碼如下:
Dispatcher.capture({
"value1$eq": "hello", /* equal */
"value2$ne": true, /* not equal */
"value3$lt": 0, /* less than */
"value4$lte: 1, /* less than or equal */
"value5$gt": 2, /* greater than */
"value6$gte": 3, /* greater than or equal */
"value7$in": [1, 3, 5, 7, 9], /* in */
"value8$nin": [2, 4, 6, 8, 10], /* not in */
"value9$all": [1, 2, 3, 4, 5], /* all */
"value10$ex": true, /* exists */
"value11$re": /^A.*/, /* regular expression */
"value12$ld": function(json) { return true; } /* lambda */
}, function(json) {});

Dispatcher.notify({
"value1": "hello",
"value2": false,
"value3": -1,
"value4": 1,
"value5": 3,
"value6": 3,
"value7": 5,
"value8": 5,
"value9": [1, 3, 5, 2, 4],
"value10": "hello",
"value11": "A13579",
"value12": "anything"
})

隨手寫(xiě)下來(lái)一堆運(yùn)算符,看起來(lái)實(shí)現(xiàn)會(huì)很復(fù)雜?其實(shí)不會(huì)有多復(fù)雜。在下一篇文章里面,我們會(huì)討論如何設(shè)計(jì)一個(gè)運(yùn)算符接口,然后逐一實(shí)現(xiàn)這些運(yùn)算符。

JavaScript技術(shù)用JavaScript對(duì)JSON進(jìn)行模式匹配(Part 1-設(shè)計(jì)),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 桦甸市| 邵武市| 阳高县| 永清县| 西宁市| 隆昌县| 武乡县| 广饶县| 浮山县| 繁峙县| 马鞍山市| 双柏县| 永定县| 五原县| 黄山市| 锦屏县| 临颍县| 阳新县| 天祝| 图木舒克市| 钦州市| 延寿县| 栾城县| 宜宾县| 辽源市| 汝南县| 嵩明县| 繁昌县| 康马县| 旬阳县| 临漳县| 成安县| 淳安县| 旌德县| 荆门市| 嘉荫县| 白山市| 湖州市| 定兴县| 那坡县| 理塘县|