日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

JavaScript模式匹配的未來

來源: 責編: 時間:2023-10-30 17:24:34 302觀看
導讀"你好,JavaScript!"動手試試。這里有一個超基礎的函數叫做 greet,它接受一個帶有'ID'和'role'的用戶,并根據用戶角色返回問候語。聽起來簡單嗎?function greet({id, role}) { if (role == 'user'){ return `Hel

zpo28資訊網——每日最新資訊28at.com

"你好,JavaScript!"

動手試試。這里有一個超基礎的函數叫做 greet,它接受一個帶有'ID'和'role'的用戶,并根據用戶角色返回問候語。聽起來簡單嗎?zpo28資訊網——每日最新資訊28at.com

function greet({id, role}) {    if (role == 'user'){        return `Hello User ${id}`;    }    if (role == 'admin'){        return `Hello Admin ${id}`;    }    if (role == 'owner'){        return `Hello Owner ${id}`;    }    throw `Invalid role: ${role}`;}

這很像一個 switch 語句,但我們很難說這完全準確——它笨拙,充斥著討厭的if 語句,對于一個未定義的角色還有一個錯誤陷阱。zpo28資訊網——每日最新資訊28at.com

function greet({id, role}) {    switch (role){        case 'user':            return `Hello User ${id}`;        case 'admin':            return `Hello Admin ${id}`;        case 'owner':            return `Hello Owner ${id}`;        default:            throw `Invalid role: ${role}`;    }}

switch 還可以,但這里我們遇到了一個問題--如果不使用一些奇怪的黑客手段,例如在 true 上進行切換,它就無法完成足夠的工作。zpo28資訊網——每日最新資訊28at.com

簡化復雜性的模式匹配藝術

模式匹配可以結束這種復雜性。想象一個你有一個 when 子句可以救我們擺脫這種冗長的迷宮的世界。zpo28資訊網——每日最新資訊28at.com

簡單地說,模式匹配允許我們檢查一個輸入是否符合一個模式或一個特定的類型。zpo28資訊網——每日最新資訊28at.com

在繼續之前,需求注意的——現在看的是一個提議。所以,這可能還不是最終的語法。zpo28資訊網——每日最新資訊28at.com

let greet = match (input) {  when { role: "user" }: `Hello User ${input.id}`,  when { role: "admin" }: `Hello Admin ${input.id}`,  when { role: "owner" }: `Hello Owner ${input.id}`,  _: throw `Invalid role: ${input.role}`,}

在這里,match函數接受輸入,when子句檢查 input 中的角色是否匹配指定的角色 - user, admin, owner。zpo28資訊網——每日最新資訊28at.com

這樣更清晰,不是嗎?不再有 if或 switch clutter - 只有一個簡潔而干凈的表達式。這不僅允許更易讀和可維護的代碼,而且為基于輸入屬性的更簡單的“行內”決策鋪平了道路,使條件、行為和結果非常容易同時閱讀。zpo28資訊網——每日最新資訊28at.com

這會改變JavaScript的未來嗎?

我真的相信模式匹配可以極大地改善JavaScript的未來。通過直接從Elixir這樣的其他語言中獲取關鍵的想法,并與JavaScript的強大靈活性結合,我們肯定可以為“JavaScript之家”增加一個頂石。zpo28資訊網——每日最新資訊28at.com

但是,我希望看到我們最喜歡的語言走得更遠,尤其是當模式匹配與函數定義結合使用時。這可能會讓我們走出舒適區,但一旦你開始探索它,你就會意識到它所擁有的力量和它帶來的簡單性。zpo28資訊網——每日最新資訊28at.com

def greet(%{role: "user", id: id}), do: `Hello User #{id}`def greet(%{role: "admin", id: id}), do: `Hello Admin #{id}`def greet(%{role: "owner", id: id}), do: `Hello Owner #{id}`def greet(%{role: _}), do: throw `Invalid role`

在這個 Elixir 代碼示例中,我們根據輸入重新定義了函數三次。除了它給予的直接清晰性外,解剖這一點,我們注意到它做了兩件事——它修剪了句法復雜性,顯著減少了理解代碼所需的心智負擔。zpo28資訊網——每日最新資訊28at.com

希望有一天JavaScript能夠實現這種基于模式的函數重載,相信這將帶來一些最好的編程體驗。就JavaScript的未來而言,作者認為模式匹配是最令人興奮的前景之一。zpo28資訊網——每日最新資訊28at.com

zpo28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-15880-0.htmlJavaScript模式匹配的未來

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: C++代碼:用 C++ 實現線性擬合

下一篇: 優雅的路由系統:Gorilla Mux

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 建昌县| 合山市| 体育| 剑阁县| 怀仁县| 南丰县| 津市市| 宝应县| 北安市| 剑阁县| 沧州市| 漳州市| 陕西省| 长治县| 凤山县| 于田县| 岢岚县| 卓资县| 陇川县| 邢台市| 扶余县| 瑞昌市| 佳木斯市| 会理县| 内江市| 潮安县| 临沂市| 织金县| 昆明市| 会昌县| 七台河市| 南宫市| 定结县| 三穗县| 温州市| 保山市| 佛教| 浮梁县| 华蓥市| 黑河市| 松潘县|