A state machine compatible extension of JAIterator.
SMBuilder smb = new SMBuilder(); new _Iterator(smb, "rs") { int i; int r = 1; int max; protected void init(StateMachine sm) { max = ((Integer) sm.request).intValue(); } protected void process(RP rp2) throws Exception { if (i >= max) rp2.process(new Integer(r)); else { i += 1; r = r * i; rp2.process(null); } } }; smb._return(new ObjectFunc(){ public Object get(StateMachine sm) { return sm.get("rs"); } }); smb.call(5, rp); Response: 120
|
|