[英]calculator on JavaScript functions
我最近在一次采访中遇到一个问题,该问题使用JavaScript中的函数实现计算器,如下所示:
five(plus(one())); //returns 6
seven(minus(one())); // returns 6
我将如何实施?
一种方法是创建一个函数getNumber(x)
,该函数将返回一个函数(称为foo )。 Foo接受运算符函数作为输入,并将运算符函数应用于x
。 但是,在您的示例中,并非总是给出数字的运算符函数(例如: one()
),因此,在这种情况下,运算符函数将默认为identity函数 ,该函数将返回数字x
(例如:如果未提供运算符,则one()
需要返回1
)。
您还可以创建一个函数setOperator
,在该函数上可以为两个数字( x
和y
)提供一个运算符,然后在调用数字函数的结果上对其进行调用。 运算符函数使用y
,然后返回一个新函数,该函数使用x
。 通过使用函数可以看到(例如: five(plus(one()))
), one()
首先提供给运算符,然后在调用我们的foo函数时提供5
(因此),因此,我们需要接受首先是y
,然后是x
。
请参见下面的示例:
const getNumber = x => (f = x => x) => f(x); const setOperator = f => y => x => f(x, y); const five = getNumber(5); const one = getNumber(1); const seven = getNumber(7); const plus = setOperator((x, y) => x+y); const minus = setOperator((x, y) => xy); console.log(five(plus(one()))); // 6 console.log(seven(minus(one()))); // 6
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.