Skip to content

Logic

either()

计算逻辑或运算的结果。

  • Type
  • Details

传入两个布尔类型的参数(记为 ),则结果为

  • Example
js
either(true, false); //true

either(false)(false); //false
either(true, false); //true

either(false)(false); //false

both()

计算逻辑与运算的结果。

  • Type
  • Details

传入两个布尔类型的参数(记为 ),则结果为

  • Example
js
either(true, false); //false

either(true)(true); //true
either(true, false); //false

either(true)(true); //true

not()

计算非运算的结果。

  • Type
  • Details

传入一个布尔类型的参数(记为 ),则结果为

  • Example
js
not(false); //true
not(false); //true

lt()

计算 < 运算的结果。

  • Type
  • Details

传入两个可比较类型的参数(记为 ),则结果为

  • Example
js
lt(2, 3); //true

lt(3)(3); //false
lt(2, 3); //true

lt(3)(3); //false

lte()

计算 <= 运算的结果。

  • Type
  • Details

传入两个可比较类型的参数(记为 ),则结果为

  • Example
js
lte(2, 3); //true

lte(3)(3); //true
lte(2, 3); //true

lte(3)(3); //true

gt()

计算 > 运算的结果。

  • Type
  • Details

传入两个可比较类型的参数(记为 ),则结果为

  • Example
js
gt(2, 3); //false

gt(3)(3); //false
gt(2, 3); //false

gt(3)(3); //false

gte()

计算 >= 运算的结果。

  • Type
  • Details

传入两个可比较类型的参数(记为 ),则结果为

  • Example
js
gte(2, 3); //false

gte(3)(3); //true
gte(2, 3); //false

gte(3)(3); //true

equal()

计算 == 运算的结果。

  • Type
  • Details

传入两个可比较类型的参数(记为 ),则结果为

  • Example
js
equal(1, 1); //true

equal(5)(1); //false
equal(1, 1); //true

equal(5)(1); //false

equalStrict()

计算 === 运算的结果。

  • Type
  • Details

传入两个可比较类型的参数(记为 ),则结果为

  • Example
js
equalStrict(1, 1); //true

equalStrict(5)(1); //false
equalStrict(1, 1); //true

equalStrict(5)(1); //false

deepEqual()

比较两个值(可以是数组、对象、或者一般的值)是否相等。

可以采用占位符 _ 来统配匹配。

需要注意的是,如果传入的是一般值,比较规则将与 equalStrict 同。

  • Type
  • Details

传入两个值。

  • Example
js
deepEqual([1, 2, 3], [4, 5, 6]); //false
deepEqual({ a: 1 }, { a: 1 }); //true
deepEqual({ a: _, b: [_, 1, 2, 3] }, { a: 1, b: [1, 1, 2, 3] }); //true
deepEqual([1, 2, 3], [4, 5, 6]); //false
deepEqual({ a: 1 }, { a: 1 }); //true
deepEqual({ a: _, b: [_, 1, 2, 3] }, { a: 1, b: [1, 1, 2, 3] }); //true

when()

构造一个参数符合条件后执行一定操作的函数。

  • Type
  • Details

初始传入两个函数类型的参数(记为 ),返回值为传入一个参数的函数。

该函数的行为是:将参数传给 函数,若 函数返回值为 true,则将执行 函数并返回其返回值;相反,如果 函数的返回值为 false,则将原样返回传入的参数。

特别的,传入 函数的参数将与传入 函数的参数相同, 函数可以不接受参数。

显然, 函数均为单元函数。

  • Example
js
const foo = when(
	(v) => v == ' is you!',
	(v) => 'homo' + v
);

foo(' is you!'); //"homo is you!";
const foo = when(
	(v) => v == ' is you!',
	(v) => 'homo' + v
);

foo(' is you!'); //"homo is you!";

unless()

构造一个参数符合条件后执行一定操作的函数。

  • Type
  • Details

初始传入两个函数类型的参数(记为 ),返回值为传入一个参数的函数。

该函数的行为是:将参数传给 函数,若 函数返回值为 false,则将执行 函数并返回其返回值;相反,如果 函数的返回值为 true,则将原样返回传入的参数。

特别的,传入 函数的参数将与传入 函数的参数相同, 函数可以不接受参数。

显然, 函数均为单元函数。

  • Example
js
const foo = unless(
	(v) => !(v == ' is you!'),
	(v) => 'homo' + v
);

foo(' is you!'); //"homo is you!";
const foo = unless(
	(v) => !(v == ' is you!'),
	(v) => 'homo' + v
);

foo(' is you!'); //"homo is you!";

ifElse()

构造一个参数符合条件后执行一定操作的函数。

  • Type
  • Details

初始传入三个函数类型的参数(记为 ),返回值为传入一个参数的函数。

该函数的行为是:将参数传给 函数,若 函数返回值为 true,则将执行 函数并返回其返回值;相反,如果 函数的返回值为 false,则将执行 函数并返回其返回值。

特别的,传入 函数的参数将与传入 函数的参数相同, 函数可以不接受参数。

显然, 函数均为单元函数。

  • Example
js
const foo = ifElse(
	(v) => v == ' is you!',
	(v) => 'homo' + v,
	(v) => 'homo' + v
);

foo(' not you!'); //"homo not you!";
const foo = ifElse(
	(v) => v == ' is you!',
	(v) => 'homo' + v,
	(v) => 'homo' + v
);

foo(' not you!'); //"homo not you!";

id()

返回与传入的参数。

  • Type
  • Details

传入一个参数,并直接返回它。

  • Example
js
id(114514); //114514
id(114514); //114514

always()

构造一个返回常量的函数。

  • Type
  • Details

传入一个参数作为常量,返回值为一个函数值为该常量的函数。

  • Example
js
always(114514)(); //114514
always(114514)(); //114514

eqType()

判断两个值的类型是否相等。

  • Type

  • Details

传入两个值,返回结果为两值的类型是否相等。

  • Example
js
eqType(1, 1); //true
eqType(1, '1'); //true
eqType(1, 1); //true
eqType(1, '1'); //true

eqData()

比较两个抽象数据结构是否相等。

  • Type
  • Details

然后传入两个由 Data 构造的对象,该函数可以判断这两个对象是否来自该抽象数据结构并且相等。

第一个参数的对应值可以传入 _ 以表示对该参数任意匹配。

  • Example
js
const foo = Data('A a b c');
eqData(foo.A(1, 1, 2), foo.A(1, 1, 2)); //true
eqData(foo.A(1, 1, { r: _ }), foo.A(1, 1, { r: 1 })); //true
const foo = Data('A a b c');
eqData(foo.A(1, 1, 2), foo.A(1, 1, 2)); //true
eqData(foo.A(1, 1, { r: _ }), foo.A(1, 1, { r: 1 })); //true

PureEval released under the GPL-3.0 License.