[英]Functional programming If
我喜歡函數式編程的概念,但是我認為很多時候代碼變得更大且更混亂。
例如,如果您有這樣的代碼(JS):
let str = user.status == 'is_admin' ? 'active user' : 'user inactive';
以較少或相似的代碼長度以FP樣式很難做到這一點。
例如在FP偽庫中:
let str = F.if(F.propEq('status', 'is_admin'), 'active user', 'user inactive'))(user)
但是,您會發現它比命令式樣式還要多10個字符。
您有什么建議可以縮短嗎?
該代碼只是示例,但我注意到在很多情況下FP樣式比命令性代碼更長。
三元運算符是函數式編程風格。 這不僅僅是命令性的陳述,還是表達 。 它返回結果值,並且不依賴於副作用才能起作用。 每種函數式編程語言都有類似的東西,包括像Haskell這樣的“超純”語言。
您不能使用三元運算符執行的唯一功能樣式就是將其傳遞給高階函數或從高階函數返回。 出於某種奇怪的原因,您有一個高階函數,例如:
function runAdminFunction(f) {
return f(is_admin, 'active user', 'user inactive');
}
您可以調用runAdminFunction(F.if)
,但不能調用runAdminFunction(?)
。 函數式編程庫之所以具有F.if
是為了在此類情況下保持完整性,這不是因為在您的示例情況下,在三元運算符上使用F.if
是一種更易讀或更好的功能風格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.