链式计算 API
链式计算 API,采用函数返回函数的设计,支持流式调用。
导入
js
import { cadd, csub, cmul, cdiv, cmod, cpow, cidiv } from 'a-calc'起始函数
cadd(...nums)
加法起始,所有参数相加。
js
cadd(1, 2, 3)() // "6"csub(first, ...rest)
减法起始,第一个参数减去其余参数。
js
csub(100, 20, 10)() // "70"cmul(...nums)
乘法起始,所有参数相乘。
js
cmul(2, 3, 4)() // "24"cdiv(first, ...rest)
除法起始,第一个参数除以其余参数。
js
cdiv(100, 2, 5)() // "10"cmod(first, ...rest)
取模起始,依次取模。
js
cmod(17, 5)() // "2"cpow(first, ...rest)
幂运算起始,依次求幂。
js
cpow(2, 3, 2)() // "64" (2^3)^2cidiv(first, ...rest)
整除起始,依次整除。
js
cidiv(17, 5)() // "3"链式方法
链式方法挂载在返回的函数对象上,不带 c 前缀:
| 方法 | 说明 |
|---|---|
.add(...nums) | 加上所有参数 |
.sub(...nums) | 减去所有参数 |
.mul(...nums) | 乘以所有参数 |
.div(...nums) | 除以所有参数 |
.mod(...nums) | 依次取模 |
.pow(...nums) | 依次求幂 |
.idiv(...nums) | 依次整除 |
js
cadd(10).add(5).mul(2).sub(10)() // "20"输出
最后调用函数输出结果:
js
// 无参数 - 返回字符串
cadd(1, 2)() // "3"
// 带格式化参数
cadd(1000, 234)('=2,') // "1,234.00"
cmul(0.5, 0.8)('%=2') // "40.00%"参数类型
所有方法接受 number | string 类型:
js
cadd(1, '2', 3)() // "6"
cmul('100', '1.1')() // "110"错误处理
链式计算中的错误会在最终调用时返回:
js
import { set_config } from 'a-calc'
// 设置错误返回值
set_config({ _error: '-' })
// 除以零返回错误值
cdiv(100, 0)() // "-"
cdiv(100, 2).div(0).mul(5)() // "-"实际应用
价格计算
js
// 原价 100,打 8 折,再减 10 元
cadd(100).mul(0.8).sub(10)() // "70"税费计算
js
// 商品价格加税后再加运费
const price = 200
const taxRate = 0.13
const shipping = 15
cmul(price, 1 + taxRate).add(shipping)('=2') // "241.00"复合运算
js
// (100 + 50) × 2 ÷ 3
cadd(100, 50).mul(2).div(3)('=2') // "100.00"类型定义
ts
type ChainFunction = {
(format?: string): string
add(...nums: (number | string)[]): ChainFunction
sub(...nums: (number | string)[]): ChainFunction
mul(...nums: (number | string)[]): ChainFunction
div(...nums: (number | string)[]): ChainFunction
mod(...nums: (number | string)[]): ChainFunction
pow(...nums: (number | string)[]): ChainFunction
idiv(...nums: (number | string)[]): ChainFunction
}
function cadd(...nums: (number | string)[]): ChainFunction
function csub(first: number | string, ...rest: (number | string)[]): ChainFunction
function cmul(...nums: (number | string)[]): ChainFunction
function cdiv(first: number | string, ...rest: (number | string)[]): ChainFunction
function cmod(first: number | string, ...rest: (number | string)[]): ChainFunction
function cpow(first: number | string, ...rest: (number | string)[]): ChainFunction
function cidiv(first: number | string, ...rest: (number | string)[]): ChainFunction