2017-04-02 50 views
1

我在我的任務中得到了這個定義,我無法完全弄清楚它是如何運作的以及它的功能。Typescript - 這是一個撰寫語法嗎?

這是一個組合語法嗎?

f是一般函數沒有具體的定義。 主要是我不明白什麼是x

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

回答

2

你在這裏給出的是一個調用模式/回調。 invokeN1(func,n-1)將返回一個變量的函數。

打破它:

(f,n)=>whatever 

這意味着invokeN1將接受兩個變量的函數,由「無論」的判斷結果。讓我們看一下:

n===0? 

檢查的invokeN1的第二個參數 - 這需要有相同的類型和值0。現在,如果是0返回:

(x) => x 

這所返回什麼 - 另一種調用模式! 這表示1個參數返回相同參數的函數。請注意0​​是這裏的函數簽名,並且x將返回。

如果n不是0,該怎麼辦?

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

另一種調用模式 - 再次,函數接受一個參數,表示爲x,並返回在右的東西,你應該能夠告訴遞歸什麼,會做,對不對?