將原本單一 Argument Function,透過 Ramda 的 unapply()
成為多 Argument Function。
Version
macOS Catalina 10.15
VS Code 1.31.1
Quokka 1.0.212
Ramda 0.26.1
Function
let add = arr => arr[0] + arr[1] + arr[2];
add([1, 2, 3]); // ?
add()
為普通 function,只有 1 個 array 為 argument。
unapply()
import { unapply } from 'ramda';
let add = arr => arr[0] + arr[1] + arr[2];
let add_ = unapply(add);
add_(1, 2, 3); // ?
若想將原本 add()
的 argument 從 1 個 array,變成 3 個 argument,可使用 Ramda 的 unapply()
加以轉換。
unapply()
([*…] → a) → (*… → a)
使單一 argument function 成為多 argument function
([*…] → a)
:原本以 array 為單一 argument function
(*… → a)
:回傳多 argument function
Conclusion
apply()
因為有a
,所以 argument 為 array;而unapply()
因為沒有a
,所以 argument 不是 array,而是多 argument,這樣聯想可以幫助記憶unapply()
並沒有提供 currying,須自行再使用curry()
- 可使用
reduce()
與unapply()
組合出 variadic function