為什麼erlang不提供return?

時間 2021-06-04 13:17:57

1樓:manlin

FP特性原則上就不應該有return。因為它要求所有函式必出有返回值。

但事實上,erlang可以做到return,你可以使用throw中斷函式執行,在業務層次,我們大多喜歡try throw驗證條件

2樓:David Gao

Erlang不提return,個人理解是,Erlang希望我們多用數學思維來寫程式,將IO和邏輯分開。

在數學上的簡單函式,總會有自變數和因變數,自然預設運算的最後就是結果。當然我們遇到複雜的邏輯無法用乙個函式完成,那麼就需要使用分段函式來完成,Erlang則為我們提供了模式匹配,guard和case of。

所以總體來說,Erlang的世界觀認為,有輸入就一定有輸出,Erlang是面向資料和訊息,而不是我們常見的流程。

那麼當我們需要打斷某個流程處理,從中間進行return時,這就說明這個地方是分段函式的取值範圍的邊界。

3樓:二狗子

多用case of。

其次,要達到return目的,可以用模式匹配來實現。

有大佬問過你的問題了,見下鏈結

[erlang-questions] Why doesn't Erlang has return statement?

erlang沒有for,所有迴圈都是靠遞迴實現的,erlang做了尾遞迴優化。

而return語句使程式或表示式的推理變得困難,很難實現的原因。

補充一下,在效率指南中,提到過try...catch 可以在某些情況下看做return,不過在遞迴中慎用

Windows server 為什麼不提供tls1 3?

上海哲信資訊科技有限公司 tls1.3目前還未正式發布,未來在Windows Server更新補丁或者新版伺服器版本會支援tls1.3。就好比nginx作為伺服器,也是要指定版本才有 在 nginx 的最新 mainline 版本 1.13.0 中,可以看到有一條這樣的介紹 Feature the ...

為什麼很多飯店不提供免費涼水?

董小雨親親 因為開水是自來水在早上燒好的放在水壺中午用的 冷水的話要麼早上的開水放了一天了要麼就要開水加冰就是沒有沒有現成的 餐廳沒有那麼多水壺專門用來放涼白開,就算是開水壺一般也是不夠用的 如果客人非要吵著涼水那麼久自來水咯 再說客人也很少會要要冷水吧 知無不言 歷史習慣性原因 中國是為數不多習慣...

Google 為什麼不提供 Google 的介面給微軟?

目前Google 的API 是比較有限的,只能獲取資訊 https Note The Google API currently provides read only access to public data而微博的的API 是比較全面的 http 首頁。應該是微軟不願意放出Windows 8 後被...