javascript中可以實現類似流的東西麼?

時間 2021-05-31 22:59:51

1樓:「已登出」

varStream

=function

(first

,compute_rest

,empty

)this

.first

=first

;this

._compute_rest

=compute_rest

;this

.empty

=empty

;this

._rest

=null

;this

._computed

=false

;return

this;};

Stream

.prototype

.rest

=function

()return

this

._rest;};

Stream

.empty

=new

Stream

(null

,null

,true

);var

MapStream

=function(fn

,stream

)var

ComputeRest

=function

();return

newStream(fn

(stream

.first

),ComputeRest

);};

// Test

vars

=new

Stream(1

,function

());

console

.log(s

.first

);console

.log(s

.rest

().first

);vars1=

MapStream

(function(x

),s);console

.log(s1

.first

);console

.log(s1

.rest

().first

);試試這種寫法

來自於 http://

www-inst.eecs.berkeley.edu/~cs61a/sp12/book/streams.html

2樓:luchy

function

cons(x

,y)else}}

function

car(p)

function

cdr(p)

function

cons_stream(x

,y,args

)var

car_stream

=car

;function

cdr_stream(p

)function

delayed(y

,args);}

function

enumerate

(start

,end

)return

cons_stream

(start

,enumerate,[

start+1

,end

]);}

function

starting_from

(start

)function

stream_map

(stream,op

)return

cons_stream(op

(car_stream

(stream

)),stream_map

,[cdr_stream

(stream

),op

]);}

function

stream_filter

(stream

,filter

)else

}function

filter(x

)vars=

stream_map

(stream_filter

(starting_from(10

),filter

),function(x

));vari=4

;while(i

-->0)

參考了下答案,實現了delay,並最後做成了無窮流

javascript中多維陣列如何實現扁平化處理,並將特殊字元 正常轉換?

微笑 console.log JSON.parse JSON.stringify 1,3,4 replace g,用手機碼的真是麻煩,思路就是都轉換成字串操作,然後再轉換回來。匹配空資料可以再repace下 JSON.parse JSON.stringify 13,4 replace g,empty...

在javascript中,能否實現訪問a b時,自動返回a get b 的結果?

Gaubee 以前開發MVVM框架的時候遇到過這種需求,比如a是乙個空屬性值的物件 進行以下操作 model.get a.b.1.c 返回undefined,model.set a.b.1.c 3 會進行自動建立值並把3正確地賦值到c屬性上面。其中遇到1這種數字時,自動建值會把b建立成array。後...

JavaScript 如何完整實現深度Clone物件?

曹上 deep copy深拷貝 vardeepCopy function obj for leti 0 i keys length i else return newObject 我試著寫了乙個,不知道給不給力。 李雪強 似乎是個哲學問題,到底能不能造出兩片相同的葉子,似乎很簡單,但是如果兩片葉子要...