打字稿 - 这是一个复合语法吗?

时间:2017-04-02 13:20:58

标签: typescript

我在作业中得到了这个定义,我无法完全弄清楚它是如何运作的以及它的作用。

这是一种撰写语法吗?

f是一般功能,没有具体的定义。 主要是我不明白什么是x

const invokeN1 = (f, n) => 
    n === 0 ? (x) => x : (x) => f(invokeN1(f,n-1)(x))

1 个答案:

答案 0 :(得分:2)

你在这里给出的是一个调用模式/回调。 invokeN1(func,n-1)将返回一个变量的函数。

分解:

(f,n)=>whatever

这意味着invokeN1将是一个接受两个变量的函数,结果由'whatever'决定。我们来看看:

n===0?

检查invokeN1的第二个参数 - 它需要具有与0相同的类型和值。现在,如果它为0则返回:

(x) => x

这是返回的内容 - 另一种调用模式! 这表示返回相同参数的1参数的函数。请注意,(x)是此处的函数签名,x是将返回的内容。

如果n不是0,该怎么办?

(x) => f(invokeN1(f,n-1)(x))

另一个调用模式 - 同样,一个接受单个参数的函数,表示为x,并返回右边的东西 - 你应该能够递归地告诉它会做什么,对吗?