點燈坊

失くすものさえない今が強くなるチャンスよ

使用 complement() 讓 Function 回傳相反值

Sam Xiao's Avatar 2020-03-17

Ramda 不少 Function 只提供正向判斷,如 isEmpty()isNil() …,若要反向判斷,可自行使用 complement() 組合。

Version

macOS Catalina 10.15.3
VS Code 1.43.0
Quokka 1.0.282
Ramda 0.27.0

not()

import { isEmpty, not, compose } from 'ramda'

let isNotEmpty = compose(not, isEmpty)

isNotEmpty('') // ?
isNotEmpty({}) // ?
isNotEmpty([]) // ?

若要實作 isNotEmpty(),可直接針對回傳值做 not(),因此可使用 compose() 組合 not()isEmpty()

complement000

complement()

import { isEmpty, complement } from 'ramda'

let isNotEmpty = complement(isEmpty)

isNotEmpty('') // ?
isNotEmpty({}) // ?
isNotEmpty([]) // ?

也可使用 complement() 直接針對 function 加以反向。

complement001

Conclusion

  • 實務上自行實作 library 時,只要提供正向判斷即可,反向可由 complement() 組合

Reference

Ramda, complement()
Ramda, isEmpty()