轉成多參數 Function

讓原本參數為 Array 的 Function,透過 Ramda 的 unapply() 成為多參數的 Function。

Version


VS Code 1.31.1
Quokka 1.0.136
Ramda 0.26.1

Normal Function


1
2
3
const add = arr => arr[0] + arr[1] + arr[2];

console.log(add([1, 2, 3]));

add() 為普通 funciton,只有 1 個 array 為參數。

unapply000

unapply()


1
2
3
4
5
import { unapply } from 'ramda';

const add = arr => arr[0] + arr[1] + arr[2];

console.log(unapply(add)(1, 2, 3));

若想將原本 add() 從 1 個 array 參數,變成 3 個參數的 function,可使用 Ramda 的 unapply() 加以轉換。

unapply()
([*…] → a) → (*… → a)
使單一 array 為參數的 function 變成多參數 function

([*…] → a):原本單一 array 為參數的 function

(*… → a):變成多參數 function

unapply001

Conclusion


  • apply() 因為有 a,所以參數為 array;而 unapply() 因為沒有 a,所以參數不是 array,而是多參數,這樣聯想可以幫助記憶
  • 透過 unapply(),可以將原本為單一 array 為參數 function 轉成多參數

Reference


Ramda, unapply()

2019-03-13