已知引數個數的函式,如何實現柯里化?

2021-08-09 23:18:11 字數 393 閱讀 6622

建立乙個函式,使得輸入的函式能具有柯里化的功能。

function curry(fn){

var len=fn.length;

var arg=array.prototype.slice.call(arguments,1);

return function(){

var args=arg.concat(array.prototype.slice.call(arguments));

if(args.length

curry(add,4)(4,5)(6)//輸出19

原理:1、判斷輸入函式有幾個引數。(這裡假定有4個引數)

這個理解起來會有點難,建議使用谷歌瀏覽器的斷點除錯來看一下具體的過程~~

如何查詢函式的引數個數

1.當在函式外面時,已經執行到該函式位置 還沒呼叫 觀察當前棧中記憶體情況,記下當前棧頂位置 如上,當前esp為ebp 78 然後f8直接呼叫並跳過函式,再觀察棧頂位置 可以看到esp變為ebp 70 這個就是壓參前的esp位置 由此,我們可以推斷7400a294位址處的函式有2個引數,並且能夠知道...

引數個數可變的函式

今天突然想起引數個數可變的函式,然後想了下,覺得自己還真不太了解它,遂決定弄清楚。1.如何取得可變引數 比如 void f int fixpara1,char p char fixpara1 取得固定引數位址 cout int p 為什麼p 4可以取到第乙個可變引數呢?因為引數在函式被呼叫前,會逐個...

可變引數個數的函式

type vafunction type arg1,type arg2,引數可以分為兩部分 個數確定的固定引數和個數可變的可選引數。函式至少需要乙個固定引數,固定引數的宣告和普通函式一樣 可選引數由於個數不確定,宣告時用 表示。固定引數和可選引數公同構成乙個函式的引數列表。標準c c 包含標頭檔案s...