Ramda 並沒有提供四捨五入到整數的 Function,但可藉由 bind()
將 ECMAScript 原生的 round()
從 Static Method 轉成 Free Function。
Version
macOS Catalina 10.15.6
VS Code 1.47.2
Quokka 1.0.309
Ramda 0.27.0
bind()
import { bind, pipe, flip, concat, multiply, toString } from 'ramda'
let round = bind(Math.round, Math)
let toPercentage = pipe(
multiply(100),
round,
toString,
flip(concat)('%')
)
toPercentage(0.994) // ?
第 3 行
let round = bind(Math.round, Math)
Math.round()
可將 Float 四捨五入到整數,但其為 static method,特別使用 bind()
將其轉成 free function。
第 5 行
let toPercentage = pipe(
multiply(100),
round,
toString,
flip(concat)('%')
)
- **multiply()**:為了要取百分比,先乘以
100
- **round()**:將 Float 四捨五入到整數
- **toString()**:將 Number 轉型成 String
- **flip(concat)()**:將
%
加到最後,因此使用flip()
將concat()
的 argument 反轉
Conclusion
bind()
可將 static method 轉成 free function;而invoker()
可將 instance method 轉成 free function
Reference
Ramda, bind()
Ramda, multiply()
Ramda, toString()
Ramda, flip()
Ramda, concat()